получить термины: определите, есть ли у термина таксономии дочерние элементы


Я пытаюсь определить, есть ли у термина таксономии дети. Смотрите приведенную ниже разметку, и я объясню, что я имею в виду:

<?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 }
} ?>

Таким образом, выводится список всех родительских терминов таксономии для таксономии wpsc_product_category, но я хочу определить, есть ли у термина таксономии дочерние элементы или нет, и если да, добавьте класс parent в соответствующий header-menu-item, чтобы я мог прикрепить к нему функцию jquery. Я не уверен, возможно ли это? Любые предложения будут с благодарностью приняты!

Author: user1374796, 2014-11-18

2 answers

В get_term_children функция должна помочь здесь.

Это возвращает массив, либо с дочерними терминами внутри него, либо пустой. Проверка того, является ли этот массив истинным или нет, по мере прохождения цикла, позволит вам определить, следует ли добавлять класс.

<?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 }
} ?>
 4
Author: DanBeckett, 2014-11-18 13:34:42

Вы можете попробовать использовать get_term_children для создания массива всех дочерних элементов этой таксономии, а затем проверить пустоту().

Поскольку он возвращает пустой массив, вы должны быть в состоянии сделать что-то вроде этого:

(Вам нужно будет узнать идентификатор вашего термина, который является числом, и заменить его в переменной ниже $term_id)

$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
Author: pwbred, 2014-11-18 13:26:48