Intereting Posts
Как создать неповторимые пули подкатегорий? WordPress запрещает изменение страницы на определенную постоянную ссылку Управление несколькими доменами из одного бэкэнд Как размещать блог в отдельном домене с основного сайта Получение ссылки the_excerpt на дочерние страницы Невозможно отредактировать информацию о мультимедиа в новой роли Как использовать WP, встроенный в Thickbox для изображений? Как перехватить уже локализованные скрипты Получать персонализированный почтовый тип по категориям в шаблоне страницы W3 Общий кеш «пустые все кеши» и никакие таблицы стилей не отображаются oEmbed youtube соотношение сторон видео Как создать пользовательский поиск для настраиваемого типа сообщений? Nav и логотип загружаются каждый раз, вызывая меню для перемещения JointsWP – Foundation 6 Страницы не сохраняются из-за пользовательского типа сообщения WordPress продолжает изменять код для вставки

Функция is_category ()

У меня есть категория, которая называется '51m series' (у нее id 135). Почему выражение is_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) ) на странице.

Solutions Collecting From Web of "Функция is_category ()"

Мое подозрение заключается в том, что по какой-то причине name «серия 51m» или 51m-series is_category( 51 ) 51m-series (или оба) совпадают с is_category( 51 ) .

Функция is_category() использует PHP in_array() условно для сопоставления с 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; 

Условие in_array() кажется, возвращает true, когда 51 находится в строке 51m series / 51m-series . Хотя условные проверки имени и slug должны быть чувствительны к регистру , ни одна из проверок не является строгой . Таким образом, целое число 51 , возможно, оценивается как строка с $cat_obj->name и совпадением 51m Series (или против $cat_obj->slug и соответствующей 51m-series )

Возможные решения:

  • Использовать названия категорий / пули, которые не начинаются с цифр
  • Запросить явно против клонов категории, а не от идентификаторов категорий

Это также может быть случай, когда ядру необходимо выполнить strict проверку in_array() , чтобы различать целое число ID и строку name / slug.