is_category() function

时间:2013-10-07 作者:Oles Dobosevych

我有一个名称为“51m系列”的类别(id为135)。为什么此类别页面上的表达式is\\u category(51)为真?我认为根据Wordpress Codex. 是虫子吗?Wordpress 3.5.2

category.php 代码:

<?php get_header(); ?>

<?php
if (is_category(array(36, 63, 64, 65, 67))) {
    get_template_part(\'category\', \'papers\');        
}  elseif (is_category(array(5, 62, 61, 23, 17, 151))) {
    get_template_part(\'category\', \'icons\');
} elseif (is_category(array(25, 50, 51, 52, 53, 54, 55, 56, 58, 71))) {
    echo is_category(51);
    get_template_part(\'category\', \'gallery-machine\');
} else {
    get_template_part(\'category\', \'gallery-frame\');
}

?>

<?php get_footer(); ?>
51m series live 您可能会看到1(is_category(51)) 在页面的上。

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

我怀疑,出于某种原因name “51m系列”或slug 51m-series 是否匹配(或两者都匹配)is_category( 51 ).

这个is_category() 作用uses the PHP in_array() conditional 要与ID、slug和name匹配,请执行以下操作:

if ( in_array( $cat_obj->term_id, $category ) )
     return true;
elseif ( in_array( $cat_obj->name, $category ) )
    return true;
elseif ( in_array( $cat_obj->slug, $category ) )
    return true;
Thein_array() conditional 似乎在以下情况下返回true51 在名称/段塞中找到51m series/51m-series. 虽然名称和slug条件检查都应该区分大小写,但没有一个检查是严格的。所以整数51 可能被评估为字符串$cat_obj->name, 和匹配51m Series (或反对$cat_obj->slug, 和匹配51m-series)

可能的解决方案:

使用不以数字开头的类别名称/段塞,明确查询类别段塞,而不是类别ID,这也可能是core需要执行strict 登记入住in_array(), 区分ID整数和名称/段塞字符串。

结束