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?
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 );
<?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(' ',$cat->depth).$cat->name.'</option>';
}
?>
</select>