Использование условных тегов в WordPress
Опубликовано: 2012-12-27Давайте посмотрим, как выполнять пользовательские функции в ваших темах в разных местах хуков на основе выполнения определенных условий и возврата да.
Если вы используете фреймворк премиум-темы, такой как Genesis, у вас будет доступ к руководству пользователя.
Руководство пользователя обычно содержит фрагменты кода, содержащие пользовательские функции.
Эти пользовательские функции могут выполняться в определенных местах темы с помощью хуков действий вашей темы.
Все, что вам нужно сделать, это вставить фрагмент кода в файл functions.php вашей дочерней темы, чтобы настроить функции вашей темы.
Каждая тематическая структура использует разные хуки, однако они в значительной степени делают одно и то же, им просто даются разные имена, например:
thesis_after_post genesis_after_post woo_post_after
Все эти 3 примера выполняются после того, как сообщение было завершено, где вы можете добавить область виджетов, баннер или окно выбора электронной почты с кнопками социальных сетей / подписки.
Но что, если вы хотите, чтобы пользовательская функция выполнялась только в определенном месте хука на основе определенных условий, например? Например:
- Только для одиночных сообщений: is_single()
- Только для сообщений в определенной категории: is_category()
- Только на странице архива: is_archive()
- Только на главной странице: is_home()
Добавление условного тега к вашей пользовательской функции, которая выполняется в расположении хука вашей темы, позволяет вам выполнять функцию, только если условие возвращает «да».
Как только вы освоитесь с пользовательскими функциями и поймете, где и как работают хуки действий вашей темы, вы можете сделать еще один шаг, используя условные теги или условные операторы, как их называют некоторые разработчики.
Итак, как мне использовать условные операторы?
Примеры условных тегов
Вот некоторые общие условные теги, используемые дизайнерами WordPress, а также разработчиками тем и плагинов.
is_home() is_category() is_single() is_page()
Во-первых, давайте рассмотрим использование условных тегов на основе нескольких операторов.
is_single и in_category
if (is_single() && in_category('134'))
if (is_single() && in_category('web-design'))
Оба этих фрагмента кода делают одно и то же и содержат 2 условных тега.
Первый использует идентификатор категории 134, а второй использует ярлык категории «веб-дизайн».
Любая функция, которую вы включаете в этот код, будет выполняться только для отдельных сообщений в категории, которая содержит идентификатор сообщения 134 или ярлык страницы «веб-дизайн». Это явно категория веб-дизайна.
Параметры
Как вы можете видеть в приведенном выше примере, вы можете использовать различные параметры с условными тегами, такими как:
- Идентификатор сообщения
- Заголовок поста
- Почтовый слаг
Некоторые условные теги, такие как тег is_home(), не исключают никаких параметров, вероятно, потому, что они на самом деле не нужны.
is_page
if (is_page('4289'))
if (is_page('contact'))
Оба этих условных тега также делают одно и то же.
В первом используется идентификатор публикации страницы 4289, а во втором — имя страницы и слаг «контакт».
Функции, которые вы включаете в этот тег, будут выполняться только на странице контактов.
Условные теги главной страницы
Чаще всего теги is_home используются для отображения чего-либо только на домашней странице или для исключения домашней страницы из функции.
дома
if (!is_home()
Этот код содержит ! перед условным тегом home_page, чтобы исключить домашнюю страницу из функции.
if (is_home()
Этот код создает условие, которое применяется только к домашней странице.
Рабочий пример
Если вы скопируете и вставите следующий код с помощью редактора кода в файл функций вашей дочерней темы, вы обнаружите, что он печатает текст после заголовка только в отдельных сообщениях.
add_action( 'genesis_entry_footer', 'add_content_after_single_posts' ); function add_content_after_single_posts() { if ( is_singular('post') ) { echo 'Content Added After Single Post Entry Footer'; } }
Приведенный выше код использует позицию хука genesis_entry_footer
с условным тегом is_singular('post')
и печатает текст после содержимого только для отдельных сообщений. Это классический пример, показывающий, как использовать условные теги в пользовательской функции с хуками действий вашей темы.
Условные теги с массивами
Вы также можете добавить массив в свой условный оператор.
is_page (массив
if (is_page(array('contact','37290'))
Вы можете добавить больше страниц в этот массив, просто включив их в этот массив через запятую.
Эта функция будет выполняться только на странице контактов и на странице, которая содержит идентификатор сообщения 37290.
Вывод текста/HTML
Если вы просто хотите отобразить какой-либо текст или HTML, вы можете добавить условный оператор к хукам действий вашей темы. Самый простой способ сделать это — вставить условный тег в HTML-код с помощью подключаемого модуля.
if ( ! is_home()) { echo'Your Text Here'; }
Давайте возьмем обычную функцию с хуком действия и добавим условный тег.
Условные теги в Книге Бытия
Вы можете легко добавить один из фрагментов кода темы Genesis для использования в темах StudioPress и включить в код условный тег.
/** Add custom body class to video category */ add_filter( 'body_class', 'add_body_class' ); function add_body_class( $classes ) { if ( is_category( 'video-tutorials' ) ) $classes[] = 'custom-class'; return $classes; }
Этот код позволяет пользователю стилизовать страницу категории видео с помощью пользовательского класса.
Используемый параметр — это слаг видеоурока, однако вы можете использовать post.id или заголовок в условном теге.
Условные теги в диссертации
Давайте возьмем пользовательскую функцию из руководства пользователя тем DIY и добавим условный оператор.
function hide_nav_menu() { if(is_page ( 'contact-page' ) ) remove_action ( 'thesis_hook_before_header', 'thesis_nav_menu' ); } add_action ( 'thesis_hook_before_html','hide_nav_menu' );
Это скроет навигационное меню только на странице контактов.
Мы могли бы использовать различные параметры для страницы контактов, включая слаг страницы, идентификатор сообщения или имя страницы.
Куда поместить код?
Если вы используете фреймворк премиум-темы, вы можете вставить код в файл functions.php вашей дочерней темы.
Все эти фреймворки предлагают подключаемый модуль или менеджер хука, который позволяет вам вставлять код в место хука, где вы хотите, чтобы код выполнялся на основе ваших условных тегов.
- Ву крюк менеджер
- Простые крючки Genesis
- Thesis, Headway и хуки WordPress
Очевидно, что вам не нужно будет включать хук действия в свой код, если вы используете менеджер хуков.
Другой вариант — вставить условные теги непосредственно в файлы шаблонов вашей темы в том месте, где вы хотите выполнить функцию на основе ваших условий. Это не лучшая практика, так как вы потеряете код при обновлении темы.
Всегда рекомендуется создавать дочернюю тему и вносить в нее изменения в файлы шаблонов. Более того, используйте пользовательские функции, уже созданные разработчиком вашей темы, и вставьте код в файл функций дочерней темы с вашими условными тегами, как только тестирование подтвердит, что это работает.
Условные теги WordPress и примеры
Вы найдете список всех условных тегов WordPress с примерами в Кодексе WordPress.
Специфичные для темы условные теги
Некоторые темы премиум-класса также используют свои собственные условные теги, которые уникальны для их структуры темы.
Woo Commerce является одним из них: Примеры:
is_woocommerce() - Returns true if on a page which uses WooCommerce templates is_product_category() - Returns true when viewing a product category archive is_checkout() - Returns true on the checkout page.
Узнайте больше об использовании условных тегов в Woo Commerce.
Вывод
Использование темы, которая предлагает большое количество фрагментов кода, проверенных разработчиком, является огромным бонусом. Таким образом, вы можете выбрать любой из условных тегов, предлагаемых WordPress, и добавить его в свой фрагмент кода, чтобы настроить тему по своему усмотрению.