Dzięki Ivaylo za ten kod, który był oparty na odpowiedzi Bainternet.
Pierwsza funkcja poniżej, get_term_top_most_parent
akceptuje termin i systematykę i zwraca element nadrzędny najwyższego poziomu tego terminu (lub sam termin, jeśli nie ma elementu nadrzędnego); druga funkcja ( get_top_parents
) działa w pętli i, biorąc pod uwagę systematykę, zwraca listę HTML najwyższych poziomów rodziców warunków w poście.
// 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;
}
Po uzyskaniu powyższej funkcji możesz zapętlić wyniki zwrócone przez wp_get_object_terms
i wyświetlić najwyższego rodzica każdego terminu:
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 )
( dokumentacji ) WordPress . Jeśli chcesz, aby wszystkie dzieci najwyższego poziomu rodzica danej kadencji jest, można przekazać powyższy rezultat do niego, tak:get_term_children( get_term_top_most_parent( $term, $taxonomy ), $taxonomy )
.get_ancestors
funkcji WP , która była nowa i nie była dobrze udokumentowana, kiedy napisano odpowiedź. Opublikuję nową odpowiedź, gdy będę miał czas na przetestowanie.Od wersji 3.1.0
get_ancestors()
jest dostępna. Zwraca tablicę przodków od najniższej do najwyższej w hierarchii.źródło
Oto prosta funkcja, która zapewni Ci najwyższy termin nadrzędny spośród wszystkich podanych terminów:
Po uzyskaniu tej funkcji możesz po prostu przejrzeć wyniki zwrócone przez
wp_get_object_terms
:źródło
źródło
Miałem ten sam problem i łatwo go rozwiązałem. Sprawdź to:
Zdefiniować
$taxonomy
. Może to być ślimak taksonomii, w której chcesz uzyskać dane. Po wykonaniu tej czynności możesz po prostu to zrobić:Teraz masz coś takiego:
I możesz użyć,
$parentObj
aby zdobyć ślimaka, imię, identyfikator, cokolwiek. Tylko za pomocą$parentObj->slug
lub$parentObj->name
jako przykład.źródło
Najprostszy sposób:
źródło
Może to pomaga:
get_ancestors( $object_id, $object_type );
codex.wordpress.org
źródło