【发布时间】:2016-06-19 07:55:22
【问题描述】:
我的父类别有子类别。我在父类别页面上列出子类别。
我正在使用 archive.php 模板。
现在我在父类别页面上遇到current-cat 类的问题。
似乎我的第一个子类别在父类别页面上获得 current-cat 类。这个current-cat 类应该只在当前类别页面上时打开。
例如,我的父类别是水果。当我在 Fruits(类别/水果)页面时,我可以看到子类别 Apple、Orange、Banana。问题是 Apple 在 Fruits 页面上获得 current-cat 类。
只有在 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>";
}
?>
如何修复我的代码?
【问题讨论】:
-
在
if语句中使用花括号,并适当缩进代码,将帮助您更轻松地进行故障排除。 -
此代码是否在
archive模板上?问题在于您检查thiscat的方式——您正在加载一个实际的post,它几乎肯定是在“Apple”猫中(显然也在水果猫)。如果这是在存档模板上,您可以改用queried_object来获取类别。 -
是的,我正在使用archive.php 模板。我更改了
$thiscat = get_queried_object($cat);但现在我根本看不到子类别。我做错了什么?
标签: php wordpress parent-child categories