web-dev-qa-db-fra.com

get_the_term_list par ordre hiérarchique

    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?

3
wpuser

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;
}
4
Pieter Goosen