【问题标题】:Child category is set current-cat on parent page子类别在父页面上设置为 current-cat
【发布时间】:2016-06-19 07:55:22
【问题描述】:

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

我正在使用 archive.php 模板。

现在我在父类别页面上遇到current-cat 类的问题。 似乎我的第一个子类别在父类别页面上获得 current-cat 类。这个current-cat 类应该只在当前类别页面上时打开。

例如,我的父类别是水果。当我在 Fruits(类别/水果)页面时,我可以看到子类别 AppleOrangeBanana。问题是 AppleFruits 页面上获得 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


【解决方案1】:

当您使用 archive 模板时,此代码:

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;

【讨论】:

  • 好吧,我明白了。我尝试了您的代码,但在父页面上仍然没有看到任何子猫。
  • 嗨,Ace - 我做出了改变。我以为你可以从我得到你的地方拿走它,但我现在已经向你展示了如何正确设置 $parent(基本上,它说“如果有父类别,请使用它,否则使用此类别id)
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多