查找帖子的最上层父类别并创建活动类

时间:2019-02-18 09:22:02

标签: php wordpress

在我的单个内容页面中,我想在类别列表中创建活动类。我想找到帖子($ class)的最上层家长。 当我在我的帖子上时,当前的上一个父类别中没有添加活动类(除了-> li cat-item)

        <div class="nwa-widget">
            <h2 class="nwa-title">CATEGORIES</h2>
              <ul>
                <?php
                  $exclude_id = get_cat_ID('Non classé');
                  $categories = get_categories( array(
                    'orderby' => 'name',
                    'parent'  => 0,
                    'hide_empty' => 0, // affiche les categories même vides
                    'exclude' => array($exclude_id)  
                  ));

                $category = get_the_category($post->ID);
                $catid = $category[0]->cat_ID;
                $top_level_cat = smart_category_top_parent_id ($catid);

                  foreach ($categories as $cat) :
                   $class = ( cat_is_ancestor_of(  $top_level_cat,  get_the_ID() ) ) ? 'active' : '';

                  the_ID()
                ?>  
                  <li class="cat-item <?php echo $class ?>">                    
                    <a href="<?php echo get_category_link($cat->term_id); ?>"><?php echo $cat->cat_name; ?></a>  
                  </li>
                <?php endforeach; ?>
              </ul> 
        </div>

1 个答案:

答案 0 :(得分:0)

尝试将 foreach 语句中的第一个字符串$class = ...替换为:

$is_active = array_reduce(
    $category,
    function ($carry, $cat) use ($top_level_cat) {
        return $carry || cat_is_ancestor_of($top_level_cat, $cat->cat_ID);
    }
);
$class = is_active? 'active' : '';