Intereting Posts
Документация WP-документа Javascript? Ошибка «ошибка обновления темы» Миграция пользователей вместе со своим паролем get_current_screen () внутри add_action ('admin_menu') Как я могу запустить этот код один раз, чтобы мой опубликованный заголовок не изменялся при публикации / обновлении? Прямая ссылка на категорию? Список сообщений из определенной категории с использованием SQL Query на удаленном db AJAX Call в плагине возвращается больше, чем JSON Изменить / пересмотреть вариант, чтобы авторы предлагали улучшение сообщений Как включить внешний PHP-файл в поддиректор WordPress? используя короткий код формы (si или cf7) для всех многосайтовых сайтов Проблема с повторной записью WordPress почему этот медиа-запрос не работает / не загружается, когда я помещаю его в дочернюю тему? JSON: создание графика json-файла Отображение списка пользовательских сообщений пользовательской таксономии

Почему здесь не работает мой if / elseif / else?

Я использую простой, если / elseif / else бит кода для создания изображения заголовка для моей страницы, я не могу понять, почему он не работает должным образом. Он определяет категорию отображаемой страницы и соответственно отображает заголовок. Вот код в моем header.php:

<?php if (is_category('dino run') || has_category('dino run')) { ?> <a href="dino-run/"><li><div class="logo splash2">Dino Run</div></li></a> <?php } elseif (is_category('potatoman') || has_category('potatoman')) { ?> <a href="http://www.pixeljam.com/potatoman/"><div class="logo splash4">Potatoman Seeks the Troof</div></a> <?php } elseif (is_category('glorkian' || 'glork') || has_category('glorkian' || 'glork')) { ?> <a href="glorkian"><div class="logo splash3">Glorkian Warrior</div></a> <?php } else { ?> <a href="#"><div class="logo splash1">The Pixeljam Octology</div></a> <?php } ?> 

Проблема, с которой я сталкиваюсь, – это щелкнуть по почте, в которой есть категория «Dino Run», и она отображается нормально … но когда я нажимаю на сообщение, которое не имеет ни одной из вышеуказанных 3 определенных категорий, оно не проваливаются в оператор else, он фактически отображает третий заголовок «Glorkian Warrior».

Какие-нибудь идеи, что я сделал здесь неправильно?

Solutions Collecting From Web of "Почему здесь не работает мой if / elseif / else?"

is_category не будет обрабатывать логику внутри списка аргументов. Эта:

 is_category('glorkian' || 'glork') 

Условие верно для всех категорий. Я думаю, что происходит то, что PHP разбирает эту строку аргументов, но всегда будет правдой. Попробуй это:

 var_dump('glorkian' || 'glork'); 

Это означает, что вы делаете, по сути, следующее:

 is_category(true); 

Это не допустимый аргумент, но функция, похоже, возвращается к функциональности по умолчанию – это архив категории или нет? Очевидно, что ответ «да» в любом архиве категории.

Допустимыми аргументами являются:

(смешанный) (необязательно) Идентификатор категории, Категория Название, Категория Слизь или Массив идентификаторов, имен и слизней.

http://codex.wordpress.org/Function_Reference/is_category#Parameters

Поэтому я считаю, что вам нужно:

 is_category( array( 'glorkian', 'glork' ) ); 

has_category же самое с has_category .

Я хотел бы использовать:

 in_category('cat-slug') ) { 

если вы хотите отобразить изображение на всех постах в категории.

Вот рабочий пример, который я написал и протестировал.

Это возвращает true как на странице архива категорий, так и на все должности в категории

 if(is_home()) echo '<div class="home-header"><img src="http://img.wordpressask.com/headers/f" alt="category header image" /></div>'; elseif(in_category('category-1') ) echo '<div class="category-one-header"><img src="http://img.wordpressask.com/headers/f" alt="category header image" /></div>'; elseif(in_category('category-2') ) echo '<div class="category-two-header"><img src="http://img.wordpressask.com/headers/f" alt="category header image" /></div>'; elseif(in_category('category-3') ) echo '<div class="category-three-header"><img src="http://img.wordpressask.com/headers/f" alt="category header image" /></div>'; elseif(in_category('category-4') ) echo '<div class="category-four-header"><img src="http://img.wordpressask.com/headers/f" alt="category header image" /></div>'; } 

Связанная информация

Другой вариант – использовать код из файла header.php Twenty Eleven, который позволяет использовать встроенный метаданный Add Featured Image, чтобы отображать уникальные заголовки на разных сообщениях и страницах без добавления какого-либо кода.

Или вы можете легко добавить условные выражения, а также если инструкции для этого кода являются более эффективным решением.