Ermitteln Sie die Taxonomie, die an den Post mit allen ihren Eltern angehängt ist

$locations = get_the_terms( $post_id, 'location' ); foreach ( $locations as $location ) { echo 'slug.'">'. $location->name .''; break; } 

Wie erhalten Sie auch alle übergeordneten Taxonomien, wenn es welche gibt?

Beispielsweise:

  1. Der aktuelle Code gibt London im Frontend aus.

  2. Was ich ausgeben müsste, um Europe > England > London .


Was ich ausgraben oder ausprobiert habe, ist, dass get_the_terms() auch eine parent , die als $location->parent . Dies hat nur ID-Eigenschaft, ich habe es nicht geschafft, Name oder Slug aus zu drücken. Es gibt auch keine Möglichkeit, es zu verwenden, um seine Eltern zu erhalten, wenn es welche hat.


Update nach einigen Experimenten:

 //Parent if( $location->parent != "" ) { $location_parent_id = $location->parent; $location_parent = get_term_by( 'id', $location_parent_id, 'location' ); echo $location_parent->name; //Here it is } //If I need parent of parent if( $location_parent->parent != "" ) { $location_parent_parent_id = $location_parent->parent; $location_parent_parent = get_term_by( 'id', $location_parent_parent_id, 'location' ); echo $location_parent_parent->name; //Here it is } //etc 

Ist das eine sehr schroffe Herangehensweise?

Solutions Collecting From Web of "Ermitteln Sie die Taxonomie, die an den Post mit allen ihren Eltern angehängt ist"

Sie möchten get_ancestors() . Das ist ziemlich grob, aber …

 $locations = get_the_terms( $post->ID, 'category' ); // var_dump($locations); $pat = 'https://wordpress.stackexchange.com/questions/212102/get-taxonomy-that-is-attached-to-post-with-all-its-parents/%s'; foreach ( $locations as $location ) { printf($pat,$location->slug,$location->name); $anc = get_ancestors($location->term_id,'category'); if (!empty($anc)) { foreach ($anc as $term) { $t = get_term_by( 'term_id', $term, 'category'); printf($pat,$t->slug,$t->name); } } break; } 

Es klingt wie Sie Ihre Taxonomie in einem Hierarchieformat anzeigen möchten? Das habe ich kürzlich getan. Probieren Sie so etwas aus

 // Get all taxonomies that do not have a parent/top level taxonomies $parents = get_terms( $taxonomy, array( 'hide_empty' => true, 'parent' => 0 ) ); foreach ( $parents as $parent ) { echo $parent->name . ': '; $child_terms = array(); // Get all post terms for this post and use the parent ID to grab the children $children = wp_get_post_terms( get_the_ID(), $taxonomy, array( 'hide_empty' => true, 'parent' => $parent->term_id ) ); foreach ( $children as $child ) { // build a link to the children taxonomy archive $child_terms[] = sprintf( 'https://wordpress.stackexchange.com/questions/212102/get-taxonomy-that-is-attached-to-post-with-all-its-parents/%s', get_term_link($child, $taxonomy), $child->name ); } echo implode( ', ', $child_terms) . '
'; }