web-dev-qa-db-ja.com

get_terms:分類用語に子があるかどうかを判別

分類用語に子があるかどうかを調べたいと思っています。以下のマークアップを参照して、私が何を意味するかを説明します。

<?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分類法のすべての親分類法用語のリストを出力しますが、分類法用語に子があるかどうかを判断したい場合は、関連するheader-menu-itemparentクラスを追加して、 jquery関数を使用します。これが可能かどうかわかりませんか?どんな提案も大歓迎です!

1
user1374796

get_term_children function が役立つはずです。

これは、その中に子の項があるか、空の配列を返します。ループするときにこの配列が正しいかどうかを確認すると、クラスを追加するかどうかを決定できます。

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

get_term_children を利用して、その分類法のすべての子の配列を生成してから、empty()をチェックしてみてください。

空の配列を返すので、次のようなことができるはずです。

(用語のIDである番号を確認し、以下の$ 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
pwbred