web-dev-qa-db-fra.com

obtenir des termes de taxonomie pour parent et enfant

J'ai une fonction configurée qui affiche le nom du terme de taxonomie et le slug pour chaque terme de taxonomie products-category présent. Cela fonctionne très bien, mais il suffit de les afficher par ordre alphabétique (peu importe qu’il s’agisse d’un terme de taxonomie parent/enfant):

Parent Category 2
Parent Category 1
Child Category 3
Parent Category 3
Child Category 2
Child Category 1 
etc...

Alors que je suis après une structure plus comme ça:

—Parent Category 1
Child Category 1
Child Category 2
Child Category 3

—Parent Category 2
Child Category 1
Child Category 2
Child Category 3

—Parent Category 3
Child Category 1
Child Category 2
Child Category 3

Ainsi, les termes enfants de chaque terme de taxonomie sont placés dessous, de sorte que vous sachiez à quel parent ils appartiennent. Mon balisage est le suivant:

<?php
$args = array(
    'hide_empty' => false
);  
 $terms = get_terms("products-category");
 if ( !empty( $terms ) && !is_wp_error( $terms ) ){
     foreach ( $terms as $term ) { ?>
      <option value=".<?php echo $term->slug; ?>" data-hook="<?php echo $term->slug; ?>"><?php echo $term->name; ?></option>
    <?php }
 } ?>   

Toute suggestion sur la façon d'atteindre cet objectif serait grandement appréciée!

1
user1374796

Vous devriez avoir deux boucles foreach. Un pour obtenir les termes de taxonomie des parents et un second pour obtenir les termes de taxonomie des enfants.

Dans le second foreach, vous devez spécifier l'ID du terme de taxonomie parent, qui est $parent_term->term_id de la première boucle foreach.

foreach( get_terms( 'products-category', array( 'hide_empty' => false, 'parent' => 0 ) ) as $parent_term ) {
  // display top level term name
  echo $parent_term->name . '<br>';

  foreach( get_terms( 'products-category', array( 'hide_empty' => false, 'parent' => $parent_term->term_id ) ) as $child_term ) {
    // display name of all childs of the parent term
    echo $child_term->name . '<br>';
  }

}
7
SLH

Vous pouvez simplement utiliser wp_list_categories pour afficher votre liste. Il est extrêmement polyvalent et peut facilement être modifié pour répondre à vos besoins spécifiques. Bien que le nom suggère que ce n'est que pour les besoins de la taxonomie intégrée category, ce n'est pas le cas. Il peut être utilisé pour n'importe quelle taxonomie

Vous devrez travailler à travers des exemples, etc. et modifier au besoin. Voici un exemple simple que vous pouvez utiliser pour afficher votre liste

wp_list_categories('taxonomy=products-category');
0
Pieter Goosen