>想象一下,有一个类别ANIMALS (ID 1)
具有子类别DOGS (ID 2)
和类别DOGS
具有子类别BIG DOGS (ID 3)
。然后你在类别 BIG DOGS
中发布了"拉布拉多"(所以它在 ID 为 3 的类别中)。
现在,在类别DOGS
的网页上,您显示此类别及其子类别中的所有帖子,因此现在它显示帖子"拉布拉多"。您需要找出当前显示的类别的ID。
所以你正在浏览类别DOGS
的网页,因此你期望代码
get_the_category()
将返回 ID 2。不幸的是,它返回上次添加的帖子的类别 ID,因此您获得 ID 3 :(
问题是,如何获取当前显示的类别的ID,该类别不是顶级父级并且具有带有帖子的子类别?
一个帖子可以有很多类别(在你的情况下也会有父猫。 ->所以,你不能有单一的答案。您可以检查它是否在类别中:
if (in_category('Cities')) {...}
或列出所有类别 帖子在 (然后检查):
$arrayListOfCategories = wp_get_post_categories( $post_id)
树的所有级别都有帖子,即使您只选择了最后一个级别,也许您的解决方案是选择要显示的树的哪个级别,这将解决问题,
$arrayListOfCategories = wp_get_post_categories($post_id);
foreach ($arrayListOfCategories as $category){
if (count(get_category_parents( $category, false, '>' )) > count($allchildren)) $allchildren = get_category_parents( $category, false, '>' ) ;
}
$catTreeLevels = explode(">", $allchildren);
echo $allchildren ." for ex. chosen 1: ".$catTreeLevels[1];
裁判。:
http://codex.wordpress.org/Function_Reference/in_categoryhttp://codex.wordpress.org/Function_Reference/wp_get_post_categories
结局 我找到了一个解决方案 - 我不检查类别的 ID,但它是
single_cat_title
无论如何都会返回正确的值(如果需要,可用于查找类别 ID)。
我希望它能帮助其他人处理同样的问题。