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

时间:2014-02-24 18:38:48

标签: php mysql wordpress categories

想象一下,拥有子类别ANIMALS (ID 1)且类别DOGS (ID 2)的类别DOGS具有子类别BIG DOGS (ID 3)。然后你在BIG DOGS类别中发布了“拉布拉多”(因此它在ID 3的类别中)。

现在,在类别DOGS的网页上,您会显示包含此类别及其子类别的所有帖子,因此现在显示帖子“Labrador”。您需要找出当前显示的类别的ID。

因此,您正在浏览类别DOGS的网页,因此您需要代码

get_the_category() 

将返回ID 2.不幸的是,它返回上次添加的帖子的类别ID,因此您获得ID 3 :(

问题是,如何获取当前显示的类别的ID,该类别不是顶级父级,并且具有帖子的子类别

2 个答案:

答案 0 :(得分:0)

一个帖子可以有很多类别(在你的情况下也会有父猫。) - >所以,你不能有单一的答案。您可以检查它是否属于类别:

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_category
http://codex.wordpress.org/Function_Reference/wp_get_post_categories

答案 1 :(得分:0)

最终我找到了一个解决方案 - 我没有检查类别的ID,但它是

single_cat_title 

无论什么都返回正确的值(如果需要,可以用于查找类别ID)。

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