Reverse-Traversierungs-Taxonomie basierend auf term_id

Ist es möglich, die Hierarchie rückwärts zu durchlaufen, wenn eine Kind-Term-ID bekannt ist?

Zum Beispiel könnte ich eine Taxonomie haben, die so aussieht:

Cars - Pink - Blue - Grey - Silver - Metallic - Matte - Unpolished - Clear Vinyl 

Ich habe die ID für “Clear Vinyl”, jetzt möchte ich eine Ansicht von allen Eltern bis hin zu Autos erstellen.

Ich kann die oberste Eltern-ID erhalten, aus der ich “ableiten” kann, wo die Durchquerung gestoppt werden soll, bis ich die ID für “Clear Vinyl” triff, aber das scheint so ein langweiliger Job zu sein. Gibt es keinen Grund warum ich sagen kann “Gib mir alle Eltern für term_id = x”.

Solutions Collecting From Web of "Reverse-Traversierungs-Taxonomie basierend auf term_id"

Dank @ialocin in seinem obigen Kommentar nahm ich seine Empfehlung und passte sie an meine Bedürfnisse an. Das Verfolgen der Taxonomie-Hierarchie von unten nach oben ist eigentlich relativ einfach, wenn Sie verstehen, wie WordPress dies von oben nach unten macht.

 function origin_trail_ancestor($cat_id = 0, $link = false, $trail = false) { global $wp_query; $anchor = "%s"; $html = ''; $descendant = get_term_by('id', $cat_id, 'taxonomy'); $descendant_id = $descendant->term_id; $ancestors = get_ancestors($cat_id, 'taxonomy'); $ancestors = array_reverse($ancestors); $origin_ancestor = get_term_by('id', $ancestors[0], 'taxonomy'); $origin_ancestor_id = $origin_ancestor->term_id; $ac = count($ancestors); $c = 1; if ($trail == false) { $origin_ancestor_term = get_term_by('id', $origin_ancestor_id, 'taxonomy'); $origin_ancestor_link = get_term_link($origin_ancestor_term->slug, $origin_ancestor_term->taxonomy); if ($link == true) { $html .= sprintf($anchor, $origin_ancestor_link, $origin_ancestor->name); } } else { foreach ($ancestors as $ancestor) { $ancestor_term = get_term_by('id', $ancestor, 'taxonomy'); $ancestor_link = get_term_link($ancestor_term->slug, $ancestor_term->taxonomy); if ($c++ == 1) { $html .= ''; } else if ($c++ != 1 || $c++ != $ac) { $html .= ' / '; } if ($link == true) { $html .= sprintf($anchor, $ancestor_link, $ancestor_term->name); } } $descendant_term = get_term_by('id', $descendant_id, 'taxonomy'); $descendant_link = get_term_link( $descendant_term->slug, $descendant_term->taxonomy ); $html .= ' / '; $anchor = "%s"; if ($link == true) { $html .= sprintf($anchor, $descendant_term->name); } } return $html; } 

Welches kann dann verwendet werden, um etwas zu tun wie:

 $breadcrumb = sprintf('You are here: %s / %s', 'All Suppliers', origin_trail_ancestor($main_listing_id, true, true)); 

Wobei $main_listing_id die ID der aktuellen Taxonomie-ID ist, die der Benutzer durchsucht und von der Sie zurückgehen möchten.

Danke, Alter.