get_terms: determinare se un termine di tassonomia ha figli
Sto cercando di determinare se un termine di tassonomia ha figli. Guarda il markup qui sotto e ti spiegherò cosa intendo:
<?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 }
} ?>
Quindi questo codice mostra un elenco di tutti i termini di tassonomia padre per la tassonomia wpsc_product_category
, ma voglio determinare se il termine di tassonomia ha figli o meno, e in caso affermativo aggiungere la classe parent
al relativo header-menu-item
così posso collegarci una funzione jQuery. Non sono sicuro se questo sia possibile. Qualsiasi suggerimento sarebbe molto apprezzato!

La funzione get_term_children
dovrebbe essere utile in questo caso.
Questa restituisce un array, che può contenere i termini figli oppure essere vuoto. Verificando se questo array è valutato come vero o falso durante il ciclo, potrai determinare se aggiungere o meno 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 }
} ?>

Grazie per il tuo suggerimento, ma sembra non funzionare? Ho implementato il codice, senza alcun effetto visto che la classe parent
non viene aggiunta?

Potresti provare a utilizzare get_term_children per generare un array di tutti i figli di quella tassonomia, e poi verificare con empty().
Poiché restituisce un array vuoto, dovresti essere in grado di fare qualcosa come questo:
(Dovrai scoprire l'id del tuo termine, che è un numero, e sostituirlo nella variabile $term_id qui sotto)
$term_id = 2
$taxonomy_name = 'wpsc_product_category';
$terms = get_term_children( $term_id, $taxonomy_name );
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
// fai le tue operazioni
}
