function btp_entry_capture_categories() {
$out = '';
global $post;
$taxonomies = get_object_taxonomies( $post );
foreach ( $taxonomies as $taxonomy ) {
$taxonomy = get_taxonomy( $taxonomy );
if ( $taxonomy->query_var && $taxonomy->hierarchical ) {
$out .= '<div class="entry-categories">';
$out .= '<h6>' . $taxonomy->labels->name . '</h6>';
$out .= get_the_term_list( $post->ID, $taxonomy->name, '<ul><li>', '</li><li>', ' › </li></ul>' );
$out .= '</div>';
}
}
return $out;
}
J'essaie de sortir la liste des catégories par ordre hiérarchique, est-il possible de faire avec mon code? Quelle serait la meilleure approche pour le faire?
get_the_term_list()
ne fonctionnera pas ici. La meilleure fonction à utiliser serait wp_get_post_terms()
Avec l'hypothèse suivante, cela peut fonctionner
Si une publication n'appartient qu'à un seul parent, un seul enfant et/ou un petit-enfant, vous pouvez commander les conditions par term_id
.
Il est généralement admis que le parent aura un numéro d’identification inférieur à celui de l’enfant et que l’enfant aura un numéro d’identification inférieur à celui de la petite-fille.
Avec cette information, vous pouvez obtenir les conditions de post comme suit puis à l'intérieur de votre code
wp_get_post_terms( $post->ID, $taxonomy->name, array( 'orderby' => 'term_id' ) );
Mais comme je l'ai dit, votre message ne devra comporter qu'un seul parent, un enfant et un petit-enfant dans le même arbre.
EDIT
Vous pouvez essayer quelque chose comme ça. Vous aurez juste besoin d'ajouter le balisage HTML vous-même
function btp_entry_capture_categories() {
$out = '';
global $post;
$taxonomies = get_object_taxonomies( $post );
foreach ( $taxonomies as $taxonomy ) {
$taxonomy = get_taxonomy( $taxonomy );
if ( $taxonomy->query_var && $taxonomy->hierarchical ) {
$out .= '<div class="entry-categories">';
$out .= '<h6>' . $taxonomy->labels->name . '</h6>';
$terms = wp_get_post_terms( $post->ID, $taxonomy->name, array( 'orderby' => 'term_id' ) );
foreach ( $terms as $term ) {
$out .= $term->name;
}
$out .= '</div>';
}
}
return $out;
}