检查帖子的类别是 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 的子级的主要内容,如果未能解决你的问题,请参考以下文章

php 将自定义模板分配给具有特定类别(和子级)的帖子。

移动自定义帖子类型的wordpress帖子及其类别以及类别的子父关系

Wordpress - 在最深的子类别中获取上一个/下一个帖子?

永久链接不适用于自定义帖子和类别

检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel

Mongoose:如何避免重复文件?