it-swarm.com.de

get_post_terms funktioniert nicht wie erwartet

Ich habe einen benutzerdefinierten Beitragstyp mit dem Namen "Obst" und unter diesem habe ich eine hierarchische Taxonomie mit dem Namen "Obstkategorien".

Wenn ich einen neuen Beitrag unter "Obst" erstelle, kann ich ihn einem "Begriff" zuordnen - wie bei einer normalen Beitragskategorie, jedoch unter der Taxonomie "Obstkategorien".

Ich habe Fruit drei Posts hinzugefügt, die jeweils einem Begriff zugeordnet sind. "Äpfel", "Birnen" und "Bananen".

All dies funktioniert gut, aber jetzt möchte ich eine Archivseite erstellen, die einfach die Begriffe in einem UL für diesen benutzerdefinierten Beitragstyp auflistet.

mysite.com/frucht

  • Äpfel
  • Birnen
  • Bananen

Dieses Problem, mit dem ich konfrontiert bin, ist, dass jede Abfrage, die ich verwendet habe, nur den ersten Begriff, Äpfel, zurückzugeben scheint. Die anderen beiden werden nicht angezeigt und ich habe viele Codefragmente ausprobiert, alle mit dem gleichen Erfolg.

Einige Dinge habe ich versucht;

    $term_list = wp_get_post_terms($post->ID, 'fruit_categories', array("fields" => "all"));  print_r($term_list);

Und

$terms = wp_get_post_terms($post->ID,'fruit_categories');
$count = count($terms);

if ( $count > 0 ){
    echo "<ul>";
    foreach ( $terms as $term ) {
        echo '<li><a href="'.get_term_link($term->slug, 'fruit_categories').'">'. $term->name . "</a></li>";
    }
    echo "</ul>";
}

Ich habe auch die hier vorgeschlagenen Tipps ausprobiert, dies führt jedoch immer noch zum selben Problem, da nur der erste Begriff aufgeführt wird.

https://stackoverflow.com/questions/15502811/display-current-post-custom-taxonomy-in-wordpress

Es ist eine Neuinstallation ohne Plugins.

Muss ich eine foreach-Schleife hinzufügen, um die zusätzlichen Begriffe einzugeben? Oder fehlt mir hier etwas?

Ich habe mir auch wp_get_object_terms angesehen, aber ich verstehe nicht wirklich, wie man es benutzt.

Wenn ich einen Screen Dump mache, bekomme ich folgendes auf mysite/fruit

Äpfel

Array ([0] => stdClass Object ([term_id] => 43 [name] => Apples [slug] => apples [term_group] => 0 [term_taxonomy_id] => 43 [taxonomy] => fruit_categories [description] = > [Eltern] => 0 [Anzahl] => 2))

Hier ist mein Registrierungscode für den benutzerdefinierten Beitragstyp und die Taxonomie http://Pastebin.com/K8kwuzqt

Jede Hilfe sehr geschätzt.

1
Sol

Ich habe falsch verstanden, was Sie zuvor versucht haben. Ich dachte, Sie möchten die Begriffe auflisten, die mit einem bestimmten Beitrag verknüpft sind - dem, auf dem Sie sich befinden. Hoppla!

Versuchen Sie dies stattdessen:

    $terms = get_terms('fruit_category');
    if(!empty($terms)){ 
        echo "<ul>";
        foreach ( $terms as $term ) {
            echo '<li><a href="'.get_term_link($term->slug, 'fruit_categories').'">'. $term->name . "</a></li>";
        }
        echo "</ul>";
    }

Auf diese Weise erhalten Sie eine Liste aller Links zu den Seiten term, vorausgesetzt, jeder Begriff enthält mindestens einen Beitrag.

Aktualisieren:

Gehen Sie folgendermaßen vor, um Taxonomiebegriffe etwas dynamischer abzurufen:

// taxonomy term archives
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
if(!empty($taxonomies)){
    foreach($taxonomies as $taxonomy){
        $terms = get_terms($taxonomy);
        if(!empty($terms)){ 
            echo "<ul>";
            foreach ( $terms as $term ) {
                echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'. $term->name . "</a></li>";
            }
            echo "</ul>";
        }
    }
}
2
GhostToast