Ana kategorinin çocuklarını edinin


17

Bu döngüde görüntülemek için tüm çocuk kategorileri almaya çalışıyorum ama kod ile mücadele ediyorum. Şimdiye kadar sahip olduğum şey bu.

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

Herhangi bir yardım harika olurdu

Yanıtlar:


19

Sadece "parent" dizesini geçemezsiniz get_categories. Ebeveynin kimliğini iletmeniz gerekir.

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

Kullanabileceğiniz iki benzer ancak eşit olmayan "alt öğe al" parametresi olduğuna dikkat edin.

child_of (integer) Kimliğiyle tanımlanan kategorinin torunları (örneğin, çocuklar ve torunlar) olan tüm kategorileri görüntüler. Bu parametre için varsayılan değer yoktur. Parametre kullanılırsa, hide_empty parametresi false olarak ayarlanır.

parent (integer) Yalnızca kimliğiyle tanımlanan kategorinin doğrudan torunları (yani yalnızca çocuklar) olan kategorileri görüntüler. Bu 'child_of' parametresi gibi çalışmaz. Bu parametre için varsayılan değer yoktur. [2.8.4'te]

Şimdi $categories. Bir diziyi yankılayamazsınız.

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

Ne yazık ki, bu bana Array'ın bir çıktısını veriyor. Hiçbir değer
alınmıyor

Bir dizi yankılamaya çalıştığınızda 'Dizi' olur. Dizi üzerinde döngü ve tek tek öğeleri yankı gerekir.
s_ha_dum

2
'Hide_empty' => false eklemek isteyebilirsiniz. Boş kategorileri de göstermek için.
Floris

2

Archive.php dosyanızda aşağıdaki kodu kullanın. Bu kod size yardımcı olacaktır:

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

Lütfen yanıtınızı düzenleyin ve bir açıklama ekleyin: bu sorunu neden çözebilir?
fuxia

0

Dizide hiçbir değer yoksa, aşağıdaki yaklaşımı deneyebilirsiniz:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.