รับลูกของหมวดหมู่ผู้ปกครอง


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เพื่อ คุณต้องผ่าน ID ของผู้ปกครอง

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

ขอให้สังเกตว่ามีสองพารามิเตอร์ที่คล้ายกัน แต่ไม่เท่ากับ "รับเด็ก"ที่คุณสามารถใช้ได้

child_of (จำนวนเต็ม) แสดงหมวดหมู่ทั้งหมดที่เป็นลูกหลาน (เช่นลูก & หลาน) ของหมวดหมู่ที่ระบุโดยรหัส ไม่มีค่าดีฟอลต์สำหรับพารามิเตอร์นี้ หากใช้พารามิเตอร์พารามิเตอร์ hide_empty จะถูกตั้งค่าเป็นเท็จ

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

น่าเสียดายที่มันให้ผลลัพธ์แบบอาร์เรย์กับฉัน ไม่มีค่าใดถูกดึงเข้ามา
Chris Da Sie

'Array' คือสิ่งที่เกิดขึ้นเมื่อคุณพยายามที่จะสะท้อนอาเรย์ คุณต้องวนซ้ำอาร์เรย์และสะท้อนองค์ประกอบแต่ละอย่าง
s_ha_dum

2
คุณอาจต้องการเพิ่ม 'hide_empty' => false เพื่อแสดงหมวดหมู่ที่ว่างเปล่า
Floris

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.