УСЛОВНЫЕ ТЕГИ В WORDPRESS
В этой статье я постараюсь простым языком объяснить, что такое "условные теги в WordPress". Полный список условных тегов можно увидеть в официальной документации.
Условные теги получили свое название потому, что они проверяют, выполняется ли определённое условие. На самом деле, это вспомогательные функции PHP в WordPress, которые называются "теги", чтобы отличать их от других функций PHP.
Большинство условных тегов созданы для удобного выполнения проверок различных условий, таких как: находимся ли мы на главной странице сайта, вошел ли пользователь в систему и т.д.
Основные характеристики условных тегов в WordPress
- Каждый тег создан для проверки конкретного условия. В общем, любую функцию, начинающуюся с
is_
, можно назвать условным тегом. - Некоторые условные теги могут принимать параметры. Например,
is_page( 20 )
проверяет ID текущей страницы. Если ID равен 20, то условие выполнено (тег сработал). - Любой условный тег возвращает логическое значение:
true
илиfalse
. Исходя из этого ответа, можно выполнить какое-то действие или нет.
Условные теги тесно связаны с иерархией файлов темы.
ВАЖНО:
Нельзя использовать теги до того, как сработает хук parse_query
, что означает, что их следует начинать использовать с хука wp
, потому что до этого хука данные, необходимые для работы условных тегов, отсутствуют (глобальные переменные, которые используют условные теги, не заполнены).
Таким образом, условный тег не сработает, если вы используете его в теле файла functions.php
, потому что этот файл подключается до срабатывания хука wp
. Обычно условные теги в файле functions.php
используются внутри других функций или хуков.
ПРИМЕР ИСПОЛЬЗОВАНИЯ УСЛОВНЫХ ТЕГОВ
Предположим, нам нужно вывести ссылку в подвале сайта, и мы хотим сделать это только на главной странице. Для этих целей в WordPress существует условный тег is_front_page()
или его эквивалент is_home()
. Эти функции возвращают true
, т��лько если посетитель находится на главной странице. В коде это будет выглядеть так:
if( is_front_page() ){
echo 'Текст ссылки';
}
Вместо HTML-кода здесь может быть PHP-код, который будет выполняться только на главной странице. Вместо is_front_page()
можно использовать is_home()
. Это схожие условные теги.
СПИСОК УСЛОВНЫХ ТЕГОВ WORDPRESS
Вот наиболее полный список условных тегов:
is_home()
— главная страницаis_front_page()
— начальная страницаis_single()
— страница одиночного постаis_page()
— страницаis_page_template()
— шаблон страницыis_singular()
— любая одиночная страницаis_year()
— архив за годis_month()
— архив за месяцis_day()
— архив за деньis_time()
— архив по времениis_date()
— страница архива по датеis_author()
— страница автораis_archive()
— любая архивная страницаis_post_type_archive()
— архив по типу постаis_paged()
— страницы с пагинациейis_category()
— страница категорииcat_is_ancestor_of()
— является ли одна категория дочерней к другойis_tag()
— страница меткиis_tax()
— любая страница таксономииis_search()
— страница результатов поискаis_404()
— страница ошибки 404is_attachment()
— страница вложенияis_admin()
— административная страницаis_user_logged_in()
— пользователь вошел в системуcurrent_user_can('capability')
— проверка прав пользователяhave_posts()
— есть посты для отображенияhas_tag()
— пост имеет меткиin_category( 10 )
— пост в категории 10have_comments()
— у поста есть комментарииpings_open()
— пинги открыты$wp_query->query_vars[cpage]
— страница с пагинацией комментариев$post->post_excerpt
— у поста есть отрывок$post->post_parent == 20
— ID родительской страницы равен 20
Подробности о некоторых условных тегах:
-
is_home(): Вернет
true
, если это главная страница блога. Это значит, что будет проверяться содержание, настроенное для главной страницы. -
is_front_page(): Вернет
true
, если вы находитесь на начальной странице, независимо от настроек. Пагинируемые страницы (например,/page/2
) не учитываются. -
is_single(): Функция принимает параметры: ID поста, его название, ярлык, или массив любых из этих параметров.
if( is_single() ){ ... } // сработает для любого поста
if( is_single(10) ){ ... } // сработает, если это пост с ID 10
if( is_single('Привет мир') ){ ... } // сработает, если название поста "Привет мир"
if( is_single('privet_mir') ){ ... } // сработает, если ярлык поста "privet_mir".// Вариант с массивом
if( is_single( array('10','Привет мир','new_post') ) ){ ... }
// сработает для поста с ID 10, названием "Привет мир" или ярлыком "new_post". -
is_page(): Страница поста типа "страница". Принимает такие же параметры, как
is_single()
: ID страницы, название страницы и так далее. -
is_singular(): Проверяет любую одиночную страницу, включая посты, страницы и произвольные типы постов.
-
is_archive(): Если это какая-либо тип архивной страницы: категория, метка, дата, авторы и так далее.
РЕДКИЕ УСЛОВНЫЕ ТЕГИ В WORDPRESS
Некоторые условные теги используются редко или не предназначены для шаблонов:
is_sticky()
— Проверяет, прикреплен ли текущий пост к верху запроса постов на главной странице.is_comment_feed()
— Является ли запрос для фида комментариев?is_preview()
— Является ли запрос для предварительного просмотра поста или страницы?is_feed()
— Является ли запрос для фида?
Эти теги могут быть полезны в зависимости от ваших нужд и структуры сайта.