Подробное описание условных тегов в WordPress
С помощью условных тегов вы можете контролировать то, какой контент отображать на странице сайта на WordPress. Существует масса готовых условных тегов, которые влияют на разные области вашего сайта, например, главную страницу, записи в блоге или определенную категорию. Это позволяет тонко настраивать отображение нужного контента вашего сайта.
В одной из предыдущих статей мы уже писали вкратце об условных тегах WordPress. А в сегодняшней статье мы рассмотрим этот вопрос более детально.
Как работают условные теги в WordPress
Условные теги – это логический тип данных, который возвращает только true
(истина) или false
(ложь). Тег is_home()
, например, относится к индексной странице блога (заданная в Консоли в Настройки > Чтение как «Страница с публикациями» при выборе Статическая страница, или же при выборе Последние публикации). С помощью этого тега вы можете показывать определенный блок текста, который не будет отображаться в других местах.
Пример использования условного тега довольно простой. Все, что мы делаем, это проверяем, является ли отображаемая страница индексной страницей блога. Если это верно, тогда мы показываем наш блок:
<?php if ( is_home() ) { echo "Добро пожаловать на наш блог!"; } ?>
Выше мы просто проверили тип отображаемой страницы. В зависимости от того, является ли результат истинным или ложным, выполняется определенный фрагмент кода.
Наиболее часто используемые условные теги WordPress
Ниже представлен список самых популярных условных тегов:
is_archive()
– проверяет, отображается ли какой-либо тип архивной страницы, включая записи по категориям, тегам, дате и автору.is_attachment()
– проверяет, отображается ли вложение. Вложение – это картинка или другой файл, который был загружен с помощью утилиты загрузки при редактировании поста.is_author()
– проверяет, отображается ли страница записей определенного автора.is_category()
– проверяет, отображается ли страница категории (записи из определенной категории).is_front_page()
– проверяет, отображается ли главная страница сайта. Это работает независимо от настроек для главной страницы (отображение постов или статическая страница).is_home()
– проверяет, отображается ли индексная страница блога. Это может быть (или не быть) главной страницей вашего сайта (зависит от настроек, что рассмотрено выше).is_page()
– проверяет, отображается ли статическая страница.is_search()
– проверяет, отображается ли страница результатов поиска.is_single()
– проверяет, отображается ли какой-либо тип поста (кроме вложений и страниц).is_singular()
– проверяет, отображается ли отдельный пост, вложение или страница (набор трех условий:is_single()
,is_page()
илиis_attachment()
). Значениеtrue
возвращается, если выполняется любое из этих условий.is_sticky()
– проверяет, был ли пост определен как прикрепленный (когда был поставлен флажок «Прикрепить этот пост на первой странице»).is_tag()
– проверяет, отображается ли страница архива тегов (записи с определенным тегом).
Если какой-либо из следующих условных тегов возвращает true
, is_archive()
также будет возвращать true
:
is_date()
– проверяет, является ли это страницей записей на основе даты.is_day()
– проверяет, является ли страница архивом записей на основе дня.is_month()
– проверяет, является ли страница архивом записей на основе месяца.is_new_day()
– проверяет, является ли сегодня новым днем. Если текущая запись была опубликована в другой день по сравнению с предыдущей опубликованной записью, тег вернетtrue
. Значениеfalse
будет возвращено, если обе записи были опубликованы в один и тот же день.is_time()
– проверяет, является ли страница архивом записей на основе времени.is_year()
– проверяет, является ли это страницей записей на основе года.
Практические примеры использования условных тегов
Многие условные теги позволяют передавать параметры в функцию. Это дает вам гораздо больший контроль над тем, какие условия должны быть выполнены, прежде чем что-то предпринимать. Условие is_page()
является хорошим примером этого. Оно позволяет проверить, является ли отображаемая страница статической страницей. Условие вернет значение true
, если отображается какая-либо страница, однако, если вам нужно проверить конкретную страницу, тогда вам нужно указать параметр $page
. В качестве этого параметра может выступать идентификатор страницы, заголовок страницы или слаг страницы (ссылка).
Давайте рассмотрим практический пример. Допустим, на вашем сайте есть страница «О компании», и вы хотите настроить ее иначе, чем все остальные страницы. Например, вы хотите добавить определенный блок информации в сайдбар (боковую панель) или же в другое место.
Для однозначной идентификации этой страницы вам нужно определить параметр $page
. Если бы у этой страницы был ID 2510
, тогда бы вы использовали следующее условное выражение:
if ( is_page( 2510 ) ) { ... }
Также вы можете определить страницу по ее заголовку:
if ( is_page( 'О компании' ) ) { ... }
В-третьих, вы можете использовать слаг страницы. Слаг страницы в WordPress – это уникальный идентификатор в конце URL (после домена). Если URL-адрес вашей страницы был бы VASH-DOMEN.com/pro-companiyu/, тогда слаг страницы будет pro-companiyu
:
if ( is_page( 'pro-companiyu' ) ) { ... }
Некоторые условные теги, такие как is_page()
, также могут передавать параметры через массив. Следующая условная конструкция вернет значение true
, если любое из условий будет выполнено:
if ( is_page( array( 2510, 'О компании', 'pro-companiyu' ) ) ) { ... }
Использование массива позволяет устанавливать более одного условия, что очень часто бывает полезным. Также иногда нужно более точное и подробное условие. В таких случаях довольно часто используются логические операторы PHP И (&&
) и ИЛИ (||
).
Например, оператор И (&&
) используется, когда вы хотите, чтобы два или более условия были выполнены, прежде чем что-то сделать. Например, в следующем примере мы проверяем, является ли страница страницей архивных записей и относится ли она к категории Спорт. На этих страницах будет отображаться информационный текст. А на страницах других категорий он не будет показываться:
<?php if ( is_archive() && is_category( 'Спорт' ) ) { echo "Вы читаете архивные записи в категории: Спорт"; } ?>
Если нужно, чтобы выполнялось хотя бы одно из двух условий, тогда используйте логический оператор ИЛИ (||
).
Операторы И и ИЛИ могут быть объединены. Ниже пример использования такой конструкции:
if ( is_single() && ( comments_open() || get_comments_number() ) ) { echo 'Комментарии поста'; }
В данном примере мы проверяем, что это страница одного поста, а также то, что комментарии разрешены и у поста есть комментарий(и).
Как вы можете видеть, функции comments_open()
и get_comments_number()
рассматриваются как одна сущность благодаря оператору ИЛИ (||
). Вот почему они заключены в скобки.
Другой логический оператор PHP, который вы можете использовать, — это оператор НЕ (!
). Например, вам нужно показывать определенный блок на всех страницах сайта, кроме страниц архивных записей. Вам не нужно писать длинное условие и проверять: «это главная страница, это отдельный пост, это статическая страница…». Более практично будет просто проверить: «Это не страница архива?».
Для этого просто добавьте восклицательный знак перед условным тегом. Код ниже показывает, насколько это просто на практике. Он будет отображать информационный блок на каждой странице вашего сайта, за исключением страниц архивных записей.
<?php if ( !is_archive() ) { echo 'Информационный блок'; } ?>
До сих пор мы рассматривали основные примеры использования условных тегов, когда что-то либо выполняется, либо не выполняется (то есть, если A истинно, тогда делаем Б). На практике обычно нужно выполнить другое действие, если условие не выполняется. Кроме того, таких условий может быть несколько, чтобы охватить все возможные ситуации.
Вместо того, чтобы писать множество отдельных условий для этого, целесообразно использовать операторы else
и elseif
. Это позволяет лучше контролировать то, что отображается на вашем сайте.
Допустим, вам нужно отображать разные блоки в нескольких различных областях вашего сайта. Как бы это правильно сделать? Ответ простой: использовать операторы else
и elseif
. Ниже пример такого кода:
<?php if ( is_home() || is_front_page() ) { echo 'Информационный блок №1'; } elseif ( is_category() ) { echo 'Информационный блок №2'; } elseif ( is_single() ) { echo 'Информационный блок №3'; } elseif ( is_page() ) { echo 'Информационный блок №4'; } else { echo 'Информационный блок №5'; } ?>
В зависимости от того, какую часть сайта просматривает посетитель, ему будет показываться один из пяти различных блоков. Это самый простой пример того, как можно легко использовать операторы else
и elseif
для управления различными областями вашего сайта. Естественно, вы можете использовать и намного более сложные блоки.
Другие важные условные теги в WordPress
Кроме рассмотренных выше тегов, есть еще другие, которые часто используются разработчиками сайтов при редактировании тем и плагинов. Вот список некоторых из них:
comments_open()
– проверяет, разрешены ли комментарии для текущего поста или страницы.current_theme_supports( $feature )
– проверяет, поддерживает ли тема определенную функцию, такую как форматы записей или избранные изображения.has_excerpt()
– проверяет, имеет ли текущий пост выдержку (вводный текст).has_nav_menu()
– проверяет, зарегистрирована ли область для назначенного меню. Это используется разработчиками темы, чтобы показать что-то в том случае, если пользователь не добавил меню.has_term()
– проверяет, имеет ли текущий пост одно из указанных условий (term_ids
,names
иslugs
).is_404()
– проверяет, отображается ли страница с ошибкой сервера 404.is_active_sidebar( $index )
– проверяет, используется ли данная боковая панель (сайдбар).is_admin()
– проверяет, отображается ли область администратора – Консоль. Условие не проверяет наличия у пользователя прав администратора, для этого используйте тегcurrent_user_can()
.is_child_theme()
– проверяет, используется ли дочерняя тема.is_feed()
– проверяет, является ли текущий запрос фидом (например, RSS).is_main_site()
– проверяет, является ли сайт основным в сети мультисайта.is_multisite()
– проверяет, поддерживается ли мультисайт.is_page_template()
– проверяет, использует ли просматриваемая страница шаблон для страницы. Можно использовать для определения конкретного шаблона страницы.is_paged()
– проверяет, является ли страница, которую вы просматриваете в данный момент, страницей с разбивкой на страницы, за исключением первой страницы в пагинации.is_plugin_active( $plugin )
– проверяет, активирован ли плагин (тег доступен только из административных страниц).is_post_type_archive()
– проверяет, отображается ли страница архива определенного типа.is_post_type_hierarchical( $post_type )
– проверяет, является ли тип записи иерархическим.is_super_admin()
– проверяет, является ли пользователь супер-администратором в сети (мультисайт).is_tax()
– проверяет, отображается ли архивная страница пользовательской таксономии. Таксономия – это принцип расположения записей, т.е., то, что связывает их. Рубрика – это один из примеров таксономии.pings_open()
– проверяет, разрешены ли пинги для текущего поста или страницы.post_type_exists()
– проверяет, существует ли указанный тип записи.taxonomy_exists()
– проверяет, существует ли указанное название таксономии.
Условные теги являются важной концепцией в WordPress. Они используются практически в каждой теме WordPress. Если вы разберетесь в них, а также будете использовать логические операторы (И, ИЛИ и НЕ), конструкции else
, elseif
, — вы сможете решить практически любую задачу на своем сайте.
Надеемся, что сегодняшняя статья очень помогла вам разобраться в теме использования условных тегов в сайте на WordPress!