it-swarm.com.de

get term archive url/link

Ich habe benutzerdefinierte Beitragstypen und Taxonomien für diese erstellt.

Beispiel: actors (Taxonomie) für movies (Beitragstyp).

Jetzt möchte ich in meinem Widget einige Begriffe und einen more-Link für das actors-Begriffsarchiv anzeigen.

Wie erhalte ich den Link/die URL des Taxonomiearchivs?

4
mrzmyr

Verwende get_term_link

z.B. So drucken Sie eine Liste der mit den Archiven verknüpften Schauspielerausdrücke aus:

$terms = get_terms('actors');
echo '<ul>';
foreach ($terms as $term) {
    echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>';
}
echo '</ul>';

Jedoch!

Wenn Sie wirklich die Entsprechung des benutzerdefinierten Beitragstyp-Archivs meinen, werden hier alle Beiträge dieses Typs aufgelistet, aber für taxonomische Begriffe, z. Auf einer Seite, die als Archiv dient und die verschiedenen verfügbaren Taxonomiebegriffe auflistet, haben Sie kein Glück. Es gibt in WordPress keine Taxonomie-Archive für Begriffe, sondern nur Beiträge, die einem bestimmten Begriff zugeordnet sind.

Um eine Seite mit den Taxonomiebedingungen zu erstellen, können Sie einen ähnlichen Code wie oben verwenden. Fügen Sie es dann in eine Seitenvorlage ein und verwenden Sie diese Seite als Ihr Taxonomiebegriffsarchiv.

Der Grund dafür ist, dass das Problem in der Post-Schleife liegt. Fast jede einzelne Seitenvorlage soll eine haben. Wenn Sie sich die Vorlagen-Hierarchie ansehen und die erforderlichen Vorlagen nicht gefunden werden, geht alles zurück auf index.php , und index.php hat eine Post-Schleife, die Posts anzeigt, keine Term-Schleife. Dies und die vielen verschiedenen Arten und Ideen, wie Begriffe aufgelistet werden sollten, bedeuten, dass es keinen Konsens gibt. Was ist mit Datumsarchiven? Sollte es ein Archiv geben, das Monate und Jahre auflistet? Zeitpläne? Paneele Fliesen Wolken etc

10
Tom J Nowell

Es gibt keinen einfachen Weg, dies durch Scheuern zu erreichen. Und jeder, der überall antwortet, denkt, Sie möchten einen Link zu einem TERM in der TAXONOMY erstellen ... Während Sie einen Link zum TAXONOMY-Archiv suchen ... Für den ich absolut nichts gefunden habe.

Grundsätzlich möchten Sie, wie viele andere auch, eine get_taxonomy_archive_link -Methode.

Außer aus dem einen oder anderen Grund existiert es einfach nicht. Ich halte dies für einen großen Fehler auf Wordpress-Seite.

Es gibt keine Antwort auf Ihre Frage. Keiner, der tatsächlich im Rahmen von WP als richtige Lösung funktioniert. Sicher, Sie können get_bloginfo() für Ihre Bedürfnisse zusammenstellen, aber es gibt absolut keinen logischen Grund innerhalb von WP, dass get_taxonomy_archive_link nicht existiert.

Abgesehen davon füge ich meinen Themen immer die folgende Funktion hinzu:

/**
 * Pass in a taxonomy value that is supported by WP's `get_taxonomy`
 * and you will get back the url to the archive view.
 * @param $taxonomy string|int
 * @return string
 */
function get_taxonomy_archive_link( $taxonomy ) {
  $tax = get_taxonomy( $taxonomy ) ;
  return get_bloginfo( 'url' ) . '/' . $tax->rewrite['slug'];
}
7
pixelbacon

es scheint, dass Sie nach einem Link zu einem Archiv mit "allen Posts, die einen Begriff aus der Taxonomie Actors haben" fragen. Alle hier haben geantwortet, als ob Sie nach dem Link zu einem bestimmten Termarchiv gefragt hätten, weil das, was Sie fragen, in der WordPress-Welt keinen Sinn ergibt.

Ich bin überrascht von der Antwort von Pixelbacon und der Tatsache, dass es 6 Upvotes hat ... Diese Funktion gibt eine URL zurück, die nirgendwo hin führt ... WordPress hat weder eine Möglichkeit, diese URL zu interpretieren, noch die Anfrage zu stellen, die gestellt werden müsste hinter dieser Bitte stehen.

in der Datenbank hat eine Taxonomie Beziehungen zu den Begriffen, und die Begriffe haben Beziehungen zu den Beiträgen. Ein einzelner Beitrag hat keine Beziehung zur Taxonomie. Das einzige, was sie verbindet, ist die Tatsache, dass ein Post-Typ eine Taxonomie unterstützen könnte.

Schreiben wir in Worten auf, was Sie auf dieser Seite anzeigen möchten: "Zeigen Sie mir alle Posts des post_type 'post', der JEDEN Begriff aus der Taxonomie Actors enthält."

dies bedeutet im Grunde genommen: "zeige mir alle Posts des post_type 'post' (der die Taxonomie Actors unterstützt)" .

Daher besteht der einzige Unterschied zu einem allgemeinen post_type-Archiv (alle Posts eines bestimmten post_type anzeigen) darin, dass Sie Posts haben, denen kein Actor-Begriff zugewiesen ist, und Sie diese ausschließen möchten.

Wenn dies der Fall ist, können Sie eine benutzerdefinierte Seite erstellen, eine generische Abfrage für alle Beiträge erstellen, dann in der Schleife überprüfen, ob der Beitrag einen Actors-Term mit wp_get_post_terms(get_the_ID(), 'actors') enthält, und ihn schließlich ausschließen, wenn er keinen hat.

2
Pikkio

Der Archivlink für eine Taxonomie folgt diesem Muster:

http://{siteurl}/{taxonomy}/{term}

Die Kategorie "Nachrichten" auf "myblogsite.com" hätte beispielsweise die folgende Archiv-URL:

http://myblogsite.com/category/news

Das "Harrison Ford" Archiv in Ihrer actors Taxonomie wäre also:

http://myblogsite.com/actors/harrison-ford
1
EAMann

benutze get_term_link () :)

BEARBEITEN:

Dies kann von Nutzen sein: Archivlink für die Taxonomie: get_the_term_list () . Aus dem Kodex:

Gibt eine HTML-Zeichenfolge mit Taxonomiebegriffen zurück, die einem Beitrag und einer bestimmten Taxonomie zugeordnet sind. Begriffe sind mit den jeweiligen Begriffen in der Liste verlinkt.

es muss also mit einer Beitrags-ID verknüpft sein, übernimmt jedoch die Archivierung der Taxonomiebegriffe.

1
moraleida

Wenn Sie Ihre benutzerdefinierte Taxonomie erstellen, können Sie ihr das Attribut rewrite hinzufügen. Dieses Attribut kann einen Überschreibungsfehler für Ihre Taxonomie festlegen, den Sie für den Link verwenden können:

register_taxonomy('actors', 'movies', array(
    // ...
    'rewrite' => array( 'slug' => 'actors' ),
    // ...
));

Um einen Link zum Erstellen des Taxonomie-Archiv-Links zu erstellen, können Sie folgendes Muster verwenden:

http://mysite.com/actors/actor-name
1
Eugene Manuilov