私は名前が「51mシリーズ」であるカテゴリを持っています(それはID 135を持っています)。このカテゴリページでis_category(51)という表現が正しいのはなぜですか。 Wordpress Codex によるとそれは間違っているはずだと思います。それはバグですか? Wordpress 3.5.2
category.php
code:
<?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)
)があります。
私の疑いは、何らかの理由でname
"51m series"またはslug
51m-series
がis_category( 51 )
に一致する(または両方が一致する)ことです。
is_category()
関数 はPHP in_array()
条件付き を使用して、ID、スラッグ、および名前と照合します。
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;
51
が/ slug 51m series
/51m-series
という名前にある場合、 in_array()
条件付き はtrueを返すようです。 nameとslugの条件付きチェックは両方とも 大文字と小文字を区別する であるべきですが、 strict のチェックはありません。そのため、整数51
は、おそらく$cat_obj->name
に対して 文字列 として評価され、51m Series
と一致する(または$cat_obj->slug
と一致し、51m-series
と一致する)
可能な解決策:
これは、ID整数とname/slug文字列を区別するために、coreがin_array()
でstrict
チェックを実行する必要がある場合にも当てはまります。