função is_category ()

4

Eu tenho categoria cujo nome é '51m series' (tem id 135). Por que a expressão is_category (51) é verdadeira nesta página de categoria? Eu acho que deveria ser falso de acordo com Wordpress Codex . Isso é um 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(); ?>

Séries de 51m ao vivo Você pode ver 1 ( is_category(51) ) na página.

    
por Oles Dobosevych 07.10.2013 / 10:23

1 resposta

2

Suspeito que, por algum motivo, a série name "51m" ou slug 51m-series é (ou ambos são) correspondentes a is_category( 51 ) .

A função is_category() usa o PHP in_array() condicional para corresponder a ID, slug e nome:

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;

O in_array() condicional parece estar retornando verdadeiro quando 51 é encontrado em o nome / slug 51m series / 51m-series . Embora ambas as verificações condicionais de nome e slug devam ser diferencia maiúsculas de minúsculas , nenhuma das verificações são strict . Portanto, o inteiro 51 está possivelmente sendo avaliado como string em relação a $cat_obj->name e correspondendo 51m Series (ou em relação a $cat_obj->slug e correspondência em 51m-series )

Soluções possíveis:

  • Use nomes de categorias / slugs que não começam com números
  • Consultar explicitamente as slugs de categoria em vez de usar os IDs de categoria

Isso também pode ser um caso em que o core precisa executar uma strict check em in_array() , para diferenciar entre um inteiro ID e uma string name / slug.

    
por Chip Bennett 08.10.2013 / 18:14