我有一个名称为“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)
) 在页面的上。
最合适的回答,由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;
The
in_array()
conditional 似乎在以下情况下返回true
51
在名称/段塞中找到
51m series
/
51m-series
. 虽然名称和slug条件检查都应该区分大小写,但没有一个检查是严格的。所以整数
51
可能被评估为字符串
$cat_obj->name
, 和匹配
51m Series
(或反对
$cat_obj->slug
, 和匹配
51m-series
)
可能的解决方案:
使用不以数字开头的类别名称/段塞,明确查询类别段塞,而不是类别ID,这也可能是core需要执行strict
登记入住in_array()
, 区分ID整数和名称/段塞字符串。