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

Chris Da Sie
sumber

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>';
}
s_ha_dum
sumber
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>';
        }
    }
?>
Antrian Violla
sumber
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
  )
);
croppio.com
sumber