Disons que nous avons une taxonomie à trois niveaux, par exemple. A > B > C
.
Ensuite, nous créons un article et l’attribuons au terme "C".
Dans notre cas, il n’y aura jamais qu’une seule mission; c'est l'événement où une chose a eu lieu à.
Sur la page du message, je ne souhaite pas afficher le terme attribué, mais le chemin hiérarchique . Ainsi, même si le message n’est attribué qu’à "C", je souhaite afficher "A> B> C" avec des liens vers la page d’archive de chacun de ces termes.
get_the_term_list
ne le fera pas, et à moins que j'utilise des termes de recherche très mauvais depuis une semaine entière, c'est apparemment très difficile à faire et chaque solution supposée que j'ai réussi à trouver est cassée d'une manière ou d'une autre. (Une des hypothèses sérieusement requises sur l'ordre des valeurs d'identifiant de base de données des termes de taxonomie.)
Voici un exemple qui semblait répondre à mon cas exact. Cela… génère simplement rien dans mon installation, et var_dump($links_string)
produit quelque chose comme "string(0) "";"
(notez qu'il y a deux endroits où "---" apparaît et qui devraient être réduits à un seul tiret.)
Est-ce que je manque quelque chose?
Notez les choses que je ne veux pas :
Utilisez get_the_terms
pour rechercher le terme de l'article, puis utilisez get_ancestors
pour obtenir un tableau des ID parents de ce terme.
$tax = 'category';
$terms = get_the_terms( get_the_ID(), $tax );
if( $terms && ! is_wp_error( $terms ) ){
// check for and output any ancestors
$ancestors = array_reverse(get_ancestors( $terms[0]->term_id, $tax ));
if( $ancestors ){
foreach( $ancestors as $ancestor ){
$parent = get_term( $ancestor, $tax );
if( $parent && ! is_wp_error( $parent ) ){
echo $parent->name;
echo get_term_link( $parent );
}
}
}
// output directly assigned term
echo $terms[0]->name;
echo get_term_link( $terms[0] );
}