Отримати дітей батьківської категорії


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

Ви не можете просто передати рядок "батьків" до get_categories. Ви повинні передати ідентифікатор батьків.

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

Зауважте, що ви можете використовувати два подібних, але не рівних параметра "отримати дитину" .

child_of (ціле число) Показати всі категорії, які є нащадками (тобто діти та онуки) категорії, визначеної за її ідентифікатором. Для цього параметра немає типових параметрів. Якщо параметр використовується, параметр hid_empty встановлюється на значення false.

батьківський (ціле число) Відображає лише категорії, які є прямими нащадками (тобто лише для дітей) категорії, визначеної за його ідентифікатором. Це НЕ працює, як параметр '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>';
}

На жаль, це просто дає мені вихід масиву. Ніякі значення не втягуються.
Chris Da Sie

"Масив" - це те, що відбувається при спробі повторити масив. Потрібно провести петлю над масивом та повторити окремі елементи.
s_ha_dum

2
Ви можете додати 'hid_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
  )
);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.