Dapatkan anak-anak dari kategori orang tua


17

Saya mencoba membuat semua kategori anak-anak ditampilkan di loop ini tetapi saya kesulitan dengan kode tersebut. Inilah yang saya miliki sejauh ini.

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

Bantuan apa pun akan bagus

Jawaban:


19

Anda tidak bisa hanya meneruskan string "induk" ke get_categories. Anda harus melewati ID orang tua.

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

Perhatikan bahwa ada dua parameter "dapatkan anak" yang serupa tetapi tidak sama yang dapat Anda gunakan.

child_of (integer) Tampilkan semua kategori yang merupakan keturunan (yaitu anak-anak & cucu) dari kategori yang diidentifikasi oleh ID-nya. Tidak ada standar untuk parameter ini. Jika parameter digunakan, parameter hide_empty disetel ke false.

parent (integer) Tampilkan hanya kategori yang merupakan keturunan langsung (yaitu anak-anak saja) dari kategori yang diidentifikasi oleh ID-nya. Ini TIDAK berfungsi seperti parameter 'child_of'. Tidak ada standar untuk parameter ini. [Dalam 2.8.4]

Sekarang Anda perlu mengulang $categories. Anda tidak bisa hanya menggemakan array.

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

Sayangnya, itu hanya memberi saya output dari Array. Tidak ada nilai yang ditarik.
— Chris Da Sie

'Array' adalah apa yang terjadi ketika Anda mencoba menggaungkan array. Anda perlu mengulang array dan menggema elemen individu.
— s_ha_dum

2
Anda mungkin ingin menambahkan 'hide_empty' => false. Untuk juga menampilkan kategori kosong.
— Floris

2

Gunakan kode di bawah ini dalam file archive.php Anda. Kode ini akan membantu Anda:

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

Harap edit jawaban Anda , dan tambahkan penjelasan: mengapa itu bisa menyelesaikan masalah?
— fuxia

0

Jika tidak ada nilai dalam array, Anda dapat mencoba pendekatan berikut:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.