检查帖子的类别是 x 还是 x 的子级
Posted
技术标签:
【中文标题】检查帖子的类别是 x 还是 x 的子级【英文标题】:Check if category of post is x or is child of x 【发布时间】:2017-04-29 07:30:43 【问题描述】:我的 wordpress 网站的类别具有简单的层次结构 –
博客 角色转换 Urod 最后一场演出 新闻我正在使用下面的 if 语句来捕捉帖子是否在类别博客或任何子类别中 - 它有效 - 但不能只检查当前类别的父类别(加上我可能想稍后添加类别)。
if ( is_category('blog') || in_category(array('role-shift', 'urod-the-last-show', 'news')) )
我已经搜索并尝试了所有建议 - 包括 cat_is_ancestor_of
- 但没有任何效果。
请帮忙!
罗伯特
【问题讨论】:
【参考方案1】:$categories = get_the_category(); //returns categories
$thiscat = $categories[0];
$parent_id = $thiscat->parent; //the parent id
$parent = get_category($parent_id) //this returns the parent category as an object
//use id or slug of category you are searching for
if( $parent_id == 1 || $thiscat->slug == 'blog' )
//this is a child of blog or the blog page
这应该可以解决问题。 这将确定当前类别是否是博客页面的子类别。 第一部分 get_category 返回当前类别。
然后你可以从当前类别中获取父id,并使用'get_the_category_by_ID'来获取父类别对象。
然后你可以检查你是否在你想要的父类别下。
【讨论】:
谢谢,但这不起作用 - if 语句没有捕捉到任何东西,所以一切都属于 else。 我对可能修复它的代码进行了更新。它做同样的事情,但以不同的方式获取当前类别和父类别并检查 slug。 还是什么都没有——不过还是谢谢。当我向echo $thiscat->slug;
询问时,我得到了当前类别的 slug,但 echo $parent->slug;
是空的。
不错!好听。以上是关于检查帖子的类别是 x 还是 x 的子级的主要内容,如果未能解决你的问题,请参考以下文章
移动自定义帖子类型的wordpress帖子及其类别以及类别的子父关系
Wordpress - 在最深的子类别中获取上一个/下一个帖子?