get_terms: determinar si un término de taxonomía tiene elementos hijos
Estoy buscando determinar si un término de taxonomía tiene elementos hijos. Mira el siguiente código y te explicaré lo que quiero decir:
<?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 }
} ?>
Este código muestra una lista de todos los términos de taxonomía padre para la taxonomía wpsc_product_category
, pero quiero determinar si el término de taxonomía tiene hijos o no, y si es así, agregar la clase parent
al header-menu-item
correspondiente para poder adjuntarle una función jQuery. ¿No estoy seguro si esto es posible? ¡Cualquier sugerencia sería muy apreciada!

La función get_term_children
debería ser útil aquí.
Esta función devuelve un array, ya sea con los términos hijos dentro o vacío. Verificar si este array es verdadero o no mientras iteras te permitirá determinar si debes añadir la clase o no.
<?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 }
} ?>

Podrías intentar utilizar get_term_children para generar un array con todos los hijos de esa taxonomía, y luego verificar con empty().
Como devuelve un array vacío, deberías poder hacer algo como esto:
(Necesitarás encontrar el id de tu término, que es un número, y reemplazarlo en la variable $term_id de abajo)
$term_id = 2
$taxonomy_name = 'wpsc_product_category';
$terms = get_term_children( $term_id, $taxonomy_name );
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
// haz lo que necesites
}
