页面返回子类别的 ID,即使在主类别上也是如此



>想象一下,有一个类别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)。

我希望它能帮助其他人处理同样的问题。

最新更新