УСЛОВНЫЕ ТЕГИ В 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()— Является ли запрос для фида?
Эти теги могут быть полезны в зависимости от ваших нужд и структуры сайта.