web-dev-qa-db-fra.com

get_terms: détermine si le terme de taxonomie a des enfants

Je cherche à déterminer si un terme de taxonomie a des enfants. Voir le balisage ci-dessous et je vais expliquer ce que je veux dire:

<?php
$terms = get_terms("wpsc_product_category");
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    foreach( get_terms( 'wpsc_product_category', array( 'hide_empty' => false, 'parent' => 0 ) ) as $parent_term ) { ?>
    <li class="header-menu-item" data-hook="<?php echo $parent_term->slug; ?>">
        <a href="<?php echo home_url(); ?>/products/<?php echo $parent_term->slug; ?>"><?php echo $parent_term->name; ?></a>                
    </li>
    <?php }
} ?>

Donc, cela génère une liste de tous les termes de taxonomie parent pour la taxonomie wpsc_product_category, Mais je veux déterminer si le terme de taxonomie a des enfants ou non, et si c'est le cas, ajoutez la classe parent à la classe header-menu-item Afin que je puisse y attacher une fonction jquery. Je ne sais pas si c'est possible? Toutes les suggestions seraient grandement appréciées!

1
user1374796

Le get_term_children function devrait aider ici.

Cela renvoie un tableau, avec les termes enfants à l'intérieur, ou vide. Vérifier si ce tableau est véridique ou non lors de votre boucle vous permettra de déterminer si vous souhaitez ou non ajouter la classe.

<?php
    $terms = get_terms('wpsc_product_category');
    if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    foreach( get_terms( 'wpsc_product_category', array( 'hide_empty' => false, 'parent' => 0 ) ) as $parent_term ) {
        $term_children = get_term_children($parent_term->term_id, 'wpsc_product_category'); ?>
        <li class="header-menu-item<?php echo ($term_children ? ' parent' : ''); ?>" data-hook="<?php echo $parent_term->slug; ?>">
            <a href="<?php echo home_url(); ?>/products/<?php echo $parent_term->slug; ?>"><?php echo $parent_term->name; ?></a>                
        </li>
    <?php }
} ?>
3
DanBeckett

Vous pouvez essayer de tirer parti de get_term_children pour générer un tableau de tous les enfants de cette taxonomie, puis comparer avec empty ().

Puisqu'il renvoie un tableau vide, vous devriez pouvoir faire quelque chose comme ceci:

(Vous devrez trouver l'identifiant de votre terme, qui est un nombre, et le remplacer dans la variable $ term_id ci-dessous)

$term_id = 2
$taxonomy_name = 'wpsc_product_category';
$terms = get_term_children( $term_id, $taxonomy_name );

if ( !empty( $terms ) && !is_wp_error( $terms ) ){
 // do your stuff
}
1
pwbred