Vielen Dank an Ivaylo für diesen Code, der auf Bainternets Antwort basierte.
Die erste unten stehende Funktion get_term_top_most_parent
akzeptiert einen Begriff und eine Taxonomie und gibt den übergeordneten Begriff der obersten Ebene zurück (oder den Begriff selbst, wenn er nicht übergeordnet ist). Die zweite Funktion ( get_top_parents
) arbeitet in der Schleife und gibt bei gegebener Taxonomie eine HTML-Liste der übergeordneten Elemente eines Posts zurück.
// Determine the top-most parent of a term
function get_term_top_most_parent( $term, $taxonomy ) {
// Start from the current term
$parent = get_term( $term, $taxonomy );
// Climb up the hierarchy until we reach a term with parent = '0'
while ( $parent->parent != '0' ) {
$term_id = $parent->parent;
$parent = get_term( $term_id, $taxonomy);
}
return $parent;
}
Sobald Sie die obige Funktion haben, können Sie die von zurückgegebenen Ergebnisse durchlaufen wp_get_object_terms
und das oberste übergeordnete Element jedes Begriffs anzeigen:
function get_top_parents( $taxonomy ) {
// get terms for current post
$terms = wp_get_object_terms( get_the_ID(), $taxonomy );
$top_parent_terms = array();
foreach ( $terms as $term ) {
//get top level parent
$top_parent = get_term_top_most_parent( $term, $taxonomy );
//check if you have it in your array to only add it once
if ( !in_array( $top_parent, $top_parent_terms ) ) {
$top_parent_terms[] = $top_parent;
}
}
// build output (the HTML is up to you)
$output = '<ul>';
foreach ( $top_parent_terms as $term ) {
//Add every term
$output .= '<li><a href="'. get_term_link( $term ) . '">' . $term->name . '</a></li>';
}
$output .= '</ul>';
return $output;
}
get_term_children( $term, $taxonomy )
( Dokumentation ) von WordPress verwenden . Wenn Sie alle Kinder eines bestimmten Begriff Top-Level - Eltern erhalten möchten, können Sie das obige Ergebnis hineingeben, wie folgt aus :get_term_children( get_term_top_most_parent( $term, $taxonomy ), $taxonomy )
.get_ancestors
Funktion von WP zu verwenden. Diese war neu und zum Zeitpunkt des Erstellens der Antwort nicht gut dokumentiert. Ich werde eine neue Antwort posten, wenn ich Zeit zum Testen hatte.Seit 3.1.0
get_ancestors()
ist verfügbar. Es gibt ein Array von Vorfahren vom niedrigsten zum höchsten Wert in der Hierarchie zurück.quelle
Hier ist eine einfache Funktion, mit der Sie den obersten übergeordneten Begriff eines bestimmten Begriffs erhalten:
Sobald Sie diese Funktion haben, können Sie einfach die Ergebnisse durchlaufen, die zurückgegeben werden von
wp_get_object_terms
:quelle
quelle
Ich hatte das gleiche Problem und ich habe es leicht gelöst. Überprüfen Sie dies heraus:
Definieren
$taxonomy
. Dies kann der Slug der Taxonomie sein, für die Sie die Daten abrufen möchten. Danach können Sie einfach Folgendes tun:Jetzt hast du so etwas:
Und Sie können verwenden
$parentObj
, um Schnecke, Name, ID, was auch immer zu bekommen. Einfach mit$parentObj->slug
oder$parentObj->name
als Beispiel.quelle
Einfachster Weg:
quelle
Vielleicht hilft das:
get_ancestors( $object_id, $object_type );
codex.wordpress.org
quelle