web-dev-qa-db-fra.com

Comment déterminer la profondeur d'un terme dans une taxonomie personnalisée?

Je construis un menu déroulant <select> pour afficher une liste de termes pour une taxonomie hiérarchique personnalisée. Comment connaître la profondeur de chaque terme? Je voudrais ajouter une indentation pour les termes enfant (plus ils sont imbriqués profondément, plus il devrait y avoir d'indentation).

Cependant, je ne parviens pas à récupérer le niveau de profondeur de get_terms(). Comment obtenir le niveau de profondeur sous forme d'entier?

1
unfulvio

Vous pouvez utiliser wp_dropdown_categories () :

Affichez ou récupérez la liste déroulante HTML des catégories.

$args = array(
    'show_count'   => 1,
    'hierarchical' => 1,
    'taxonomy'     => 'my_taxonomy',
);

wp_dropdown_categories( $args );
1
Mike Madern
<?php
$args = array(
    'taxonomy' => 'category',
    'orderby' => 'name',
    'order' => 'ASC',
    'hierarchical'  => true,
    'hide_empty' => false,
);
$the_query = new WP_Term_Query($args);
$categories = $the_query->get_terms();


foreach($categories as $cat){
    $ancestors = get_ancestors( $cat->term_id, 'category' );
    $cat->ancestors = $ancestors; // array( 0 => 15, 1 => 45 ) - 3rd level term
    $cat->depth = count( $ancestors ) ;
}
?>
<select>
    <?php 
        foreach($categories as $cat){
            echo '<option value="'.$cat->term_id.'">'.str_repeat('&nbsp;&nbsp;&nbsp;',$cat->depth).$cat->name.'</option>';
        } 
    ?>
</select>
0
Ann