親カテゴリの子を取得します


17

このループですべての子カテゴリを表示しようとしていますが、コードに苦労しています。これは私がこれまで持っているものです。

<?php $args=array('orderby' => 'name', 'order' => 'ASC');
    $categories=get_categories($args); 
    foreach ($categories as $cat) { ?>
    <dt><a href="#" class="customer-acquisitiontop" id="<?php echo $cat->slug; ?>" data-filter=".<?php echo $cat->slug; ?>"><h2><?= $cat->cat_name; ?></h2></a></dt>
    <dd><div class="services">
    <?= $categories=get_categories('parent'); ?> /*This should be the children of the parent category */
    </div>
    </dd>
<?php } ?>

どんな助けも素晴らしいでしょう

回答:


19

文字列 "parent"を単に渡すことはできませんget_categories。親のIDを渡す必要があります。

$categories=get_categories(
    array( 'parent' => $cat->cat_ID )
);

使用できる2つの類似した、ただし等しくない「子を取得」パラメーターがあることに注意してください。

child_of(整数)そのIDで識別されるカテゴリの子孫(つまり、子と孫)であるすべてのカテゴリを表示します。このパラメーターにはデフォルトはありません。パラメーターが使用される場合、hide_emptyパラメーターはfalseに設定されます。

parent(整数)そのIDで識別されるカテゴリの直接の子孫(つまり、子のみ)であるカテゴリのみを表示します。これは、「child_of」パラメーターのようには機能しません。このパラメーターにはデフォルトはありません。[2.8.4で]

次に、をループする必要があります$categories。配列をエコーすることはできません。

foreach ($categories as $c) {
    var_dump($c);
    // what you really want instead of var_dump is something to
    // to create markup-- list items maybe, For example...
    echo '<li>'.$c->cat_name.'</li>';
}

残念ながら、それは単に配列の出力を提供しているだけです。いいえ値ないに引っ張られている。
クリス・ダSIE

「配列」は、配列をエコーし​​ようとすると発生します。配列をループし、個々の要素をエコーする必要があります。
s_ha_dum

2
'hide_empty' => falseを追加することもできます。空のカテゴリも表示します。
フローリス

2

archive.phpファイルで次のコードを使用します。このコードは次のことに役立ちます。

<?php

    $term = get_queried_object();

    $children = get_terms( $term->taxonomy, array(
        'parent'    => $term->term_id,
        'hide_empty' => false
    ) );

    if ( $children ) { 
        foreach( $children as $subcat )
        {
            echo '<li><a href="' . esc_url(get_term_link($subcat, $subcat->taxonomy)) . '">' . $subcat->name . '</a></li>';
        }
    }
?>

回答を編集し、説明を追加してください:なぜそれが問題を解決できるのですか?
FUXIA

0

配列に値がない場合は、次のアプローチを試すことができます。

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.