Merci à Ivaylo pour ce code basé sur la réponse de Bainternet.
La première fonction ci-dessous, get_term_top_most_parent
accepte un terme et une taxonomie et renvoie le parent de niveau supérieur du terme (ou le terme lui-même, s'il est sans parent); la deuxième fonction ( get_top_parents
) fonctionne dans la boucle et, étant donné une taxonomie, renvoie une liste HTML des parents de niveau supérieur des termes d'un article.
// 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;
}
Une fois que vous avez la fonction ci-dessus, vous pouvez parcourir les résultats renvoyés par wp_get_object_terms
et afficher le parent supérieur de chaque terme:
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 )
( documentation ). Si vous vouliez obtenir tous les enfants d'un parent haut niveau de terme donné, vous pouvez passer le résultat ci - dessus en elle, comme ceci:get_term_children( get_term_top_most_parent( $term, $taxonomy ), $taxonomy )
.get_ancestors
, qui était nouvelle et mal documentée lorsque la réponse a été écrite. Je posterai une nouvelle réponse quand j'aurai le temps de tester.Depuis 3.1.0,
get_ancestors()
est disponible. Il renvoie un tableau d'ancêtres du plus bas au plus élevé de la hiérarchie.la source
Voici une fonction simple qui vous permettra d'obtenir le terme le plus parent de tout terme donné:
Une fois que vous avez cette fonction, vous pouvez simplement parcourir les résultats renvoyés par
wp_get_object_terms
:la source
la source
J'ai eu le même problème et j'ai résolu facilement. Regarde ça:
Définissez
$taxonomy
. Il peut s'agir de la limace de la taxonomie que vous souhaitez obtenir les données. Après cela, vous pouvez simplement faire ceci:Maintenant, vous avez quelque chose comme ça:
Et vous pouvez utiliser
$parentObj
pour obtenir slug, nom, id, peu importe. Juste en utilisant$parentObj->slug
ou$parentObj->name
comme exemple.la source
Manière la plus simple:
la source
Peut-être que cela aide:
get_ancestors( $object_id, $object_type );
codex.wordpress.org
la source