Nhận con cái của thể loại cha mẹ


17

Tôi đang cố gắng để tất cả các danh mục trẻ em hiển thị trong vòng lặp này nhưng tôi đang vật lộn với mã. Đây là những gì tôi có cho đến nay.

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

Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời

Câu trả lời:


19

Bạn không thể chuyển chuỗi "cha mẹ" sang get_categories. Bạn phải vượt qua ID của cha mẹ.

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

Lưu ý rằng có hai tham số "lấy con" tương tự nhưng không bằng nhau mà bạn có thể sử dụng.

child_of (số nguyên) Hiển thị tất cả các danh mục là hậu duệ (tức là con & cháu) của danh mục được xác định bởi ID của nó. Không có mặc định cho tham số này. Nếu tham số được sử dụng, tham số hide_empty được đặt thành false.

cha mẹ (số nguyên) Chỉ hiển thị các danh mục là hậu duệ trực tiếp (chỉ dành cho trẻ em) của danh mục được xác định bởi ID của nó. Điều này KHÔNG hoạt động như tham số 'child_of'. Không có mặc định cho tham số này. [Trong 2.8.4]

Bây giờ bạn cần để lặp qua $categories. Bạn không thể chỉ lặp lại một mảng.

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>';
}

Thật không may, điều đó chỉ mang lại cho tôi một đầu ra của Array. Không có giá trị nào được kéo vào.
Chris Da Sie

'Mảng' là những gì xảy ra khi bạn cố gắng lặp lại một mảng. Bạn cần lặp qua mảng và lặp lại các phần tử riêng lẻ.
s_ha_dum

2
Bạn có thể muốn thêm 'hide_empty' => false. Để cũng hiển thị các danh mục trống.
Floris

2

Sử dụng mã dưới đây trong tập tin archive.php của bạn. Mã này sẽ giúp bạn:

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

Vui lòng chỉnh sửa câu trả lời của bạn và thêm một lời giải thích: tại sao điều đó có thể giải quyết vấn đề?
fuxia

0

Nếu không có giá trị nào trong mảng, bạn có thể thử cách tiếp cận sau:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.