子类别在父页面上设置为current-cat

时间:2016-03-05 14:39:21

标签: php wordpress parent-child categories

我有父类别有孩子。我在父类别页面上列出了子类别。

我使用的是archive.php模板。

现在,我在父类别页面上面临current-cat课程的问题。 似乎我的第一个子类别在父类别页面上获得current-cat课程。此current-cat类只应在当前类别页面上打开。

例如,我的父类别是水果。当我在水果(类别/水果)页面上时,我可以看到子类别 Apple 橙色香蕉< / strong>即可。问题是 Apple 水果页面上获得了current-cat课程。

只有在 Apple 页面(类别/ fruits / apple)上才能获得该课程。

这是我目前的代码:

global $wp_query;

$ID = $wp_query->posts[0]->ID; 
$postcat = get_the_category($ID);
$cat = $postcat[0]->cat_ID; 
$thiscat = get_category ($cat); 
$parent = $thiscat->category_parent; 

if ($parent == 0) {

}

else { 

    $subcategories = get_categories('child_of='.$parent);
    $items='';
        foreach($subcategories as $subcat) {
            if($thiscat->term_id == $subcat->term_id) 
              $current = ' current-cat'; 
            else $current = ''; 
              $items .= '
            <li class="cat-item cat-item-'.$subcat->term_id.$current.'"> 
                <a href="'.get_category_link( $subcat->term_id ).'" title="'.$subcat->description.'">'.$subcat->name.' </a>
            </li>';
    }
    echo "<ul>$items</ul>";
    }

?>

如何修复我的代码?

1 个答案:

答案 0 :(得分:1)

当您使用存档模板时,此代码为:

global $wp_query;

$ID = $wp_query->posts[0]->ID; 
$postcat = get_the_category($ID);
$cat = $postcat[0]->cat_ID; 
$thiscat = get_category ($cat); 

从第一篇文章中加载类别。第一篇文章可以是一个,两个或多个类别,因此以这种方式获取类别ID并不可靠。

相反,还有其他一些方法 - 尝试此方法 - 获取要为其加载存档的类别ID:

$cat = get_query_var('cat');
$thiscat = get_category($cat);
$parent = ($thiscat->category_parent) ? $thiscat->category_parent : $thiscat->term_id;