J'ai la catégorie qui s'appelle '51m series' (il a l'identifiant 135). Pourquoi l'expression is_category (51) est vraie sur cette page de catégorie? Je pense que cela devrait être faux selon Wordpress Codex . Est-ce un bug? 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 Vous pouvez voir 1 (is_category(51)
) sur le de la page.
Je soupçonne que, pour une raison quelconque, name
"série 51m" ou slug
51m-series
correspond (ou les deux correspondent) à is_category( 51 )
.
La fonction is_category()
utilise le PHP in_array()
conditionnel pour établir une correspondance avec l'ID, le slug et le nom:
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;
Le in_array()
conditionnel semble retourner vrai lorsque 51
est trouvé dans le nom/slug 51m series
/51m-series
. Alors que les contrôles conditionnels de nom et de slug doivent être sensibles à la casse, aucun des contrôles n'est strict. Ainsi, l'entier 51
est peut-être évalué comme un chaîne contre $cat_obj->name
et correspondant à 51m Series
(ou par rapport à $cat_obj->slug
et correspondant à 51m-series
)
Solutions possibles:
Cela peut également être un cas où le noyau doit effectuer une vérification strict
dans in_array()
, afin de différencier un entier ID et une chaîne de nom/numéro de bloc.