获取父类别的子项


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

任何帮助都会很棒

Answers:


19

您不能只将字符串“ parent”传递给get_categories。您必须传递父母的ID。

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

请注意,可以使用两个相似但不相等的“ get child”参数

child_of(整数)显示其ID标识的类别的所有后代(即子孙)。此参数没有默认值。如果使用该参数,则hide_empty参数设置为false。

父级(整数)仅显示由其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>';
}

不幸的是,这只是给我Array的输出。没有值在被拉扯。
克里斯大SIE

当您尝试回显数组时,将发生“数组”。您需要遍历数组并回显各个元素。
s_ha_dum 2012年

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
  )
);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.