条件语句自定义POST类型类别

时间:2014-03-27 作者:user43780

我想根据我的自定义分类类别显示文本,如:

如果自定义帖子类型类别是X,则回显文本Y。

我试过这个,但不起作用:

global $post; 
if (($post->post_type == \'myposttype\') && is_category(\'slug-name-of-cat\')) {
 echo \'My text\'

 }
有什么想法吗?

3 个回复
SO网友:Pieter Goosen

is_category() 不适用于自定义分类法存档页。这里正确的条件标记是is_tax() 它将分类法的名称作为第一个参数,并将术语名称、slug或ID的字符串| int |数组作为第二个参数。

因此,整个条件语句可以如下所示:

if ( is_tax( \'my_taxonomy\', \'slug-name-of-the-term\') ) {
    echo \'My text\';
}
编辑此外,要测试帖子是否属于特定术语,您应该使用has_term() 测试特定术语

global $post; 
if (    ( $post->post_type == \'myposttype\' ) 
     && has_term( \'slug-name-of-the_term\', \'my_taxonomy\' )
) {
    echo \'My text\';
}

SO网友:Rarst

有条件的is_* 函数用于查询,而不是当前帖子。换句话说,他们告诉你关于你所在页面的信息,但不是关于当前帖子的信息。

  • is_category() 将检查当前页面是否为类别存档has_category() 我会根据您的描述检查帖子是否指定了特定类别,我怀疑您指的是后者。

SO网友:Siddhartha Chowdhury

有关详细了解,请参阅本法典:https://codex.wordpress.org/Function_Reference/get_categories

您可以这样做:

        $args = array(
                \'taxonomy\'     => **$your_taxonomy**,
                \'orderby\'      => name,
                \'title_li\'     => $title,
        );
        $sub_cats = get_categories( $args );
        if( !empty($sub_cats) ) {
         // echo our stuff
        }

结束