如何检查帖子是否在x、y、z类别中,包括它们的子类别

时间:2014-07-26 作者:Jack Stanson

我试图检查一篇文章是否属于类别X、Y、Z(包括其中的子类别)。

这是我在单曲中尝试过的一段代码。php:

if ( in_category(array( \'1\', \'2\', \'3\', ) ) {
                    echo "This post is in the selected categories or their subcategories";
                              }
                else {
                echo "this post inst in the categories or the subs.";
                          }
我还尝试使用post\\u is\\u in\\u descendant\\u类别(包括代码上方的codex中的函数),但它仍然不会显示true。包括函数这是我在测试2上使用的代码#:

    if ( in_category(array( \'1\', \'2\', \'3\', ) ) || post_is_in_descendant_category( array( \'1\', \'2\', \'3\', ) ) ) {
                    echo "This post is in the selected categories or their subcategories";
                              }
                else {
                echo "this post inst in the categories or the subs.";
                          }

1 个回复
SO网友:cybmeta

post_is_in_descendant_category 不是WP函数。如果你不定义它,它就不存在。我想你已经阅读了in_category() 功能和已采取post_is_in_descendant_category from the example 没有完全阅读。将此代码添加到函数。php或插件:

if ( ! function_exists( \'post_is_in_descendant_category\' ) ) {
    function post_is_in_descendant_category( $cats, $_post = null ) {
        foreach ( (array) $cats as $cat ) {
            // get_term_children() accepts integer ID only
            $descendants = get_term_children( (int) $cat, \'category\' );
            if ( $descendants && in_category( $descendants, $_post ) )
                return true;
        }
        return false;
    }
}
现在post_is_in_descendant_category() 已定义,您可以使用它。记住使用in_category()post_is_in_descendant_category() 在循环内部,如果没有,则需要传递post ID或对象以进行检查。

注意:您正在使用array( \'1\', \'2\', \'3\', ). 数组中的值是字符串;我想你指的是ID为1、2和3的类别。要传递cateogories ID,必须将值作为整数传递:array( 1, 2, 3 ). 还要注意的是post_is_in_descendant_category 仅接受类别ID作为整数值。

结束

相关推荐

List all blog categories

我已经创建了一个博客插件。我的博客中有博客类别。我想获得所有博客类别的列表,并将其列在我的www.domain中。com/blogs/page。我的博客类别名称为“blogcategory”。我不知道如何在list-category 作用我是wordpress开发的nooby。