WordPress как на ладони
Готовые темы (шаблоны) для WordPress wordpress jino

Условные теги в WordPress

В этой статье я постараюсь доходчиво объяснить что такое «условные теги в WordPress» (Conditional Tags). В качестве справочника по всем условным тегам, используйте эту страницу.

Условные теги

Называются так, потому что проверяют выполняется ли кое-либо условие. На деле условные теги — это вспомогательные PHP функции WordPress, а называют их тегами, чтобы как-то выделить из числа прочих PHP функций. В большинстве своем, условные теги созданы для удобного выполнения проверок различных условий, например находимся ли мы на главной странице сайта.

Характеристики условных тегов в WordPress:

  • Каждый из тегов создан для проверки определенного условия. Грубо говоря любую функцию начинающуюся с is_ (is_*()) можно назвать условным тегом.

  • Некоторые условные теги могут принимать параметры: is_page(20) - проверяет ID текущей страницы. Если ID равен 20 то условие выполняется (тег срабатывает).

  • Любой условный тег возвращает логическое значение: true (правда) или false (ложь). На основе этого ответа можно делать или не делать что-либо.

С условными тегами очень тесно связана иерархия файлов темы. Для лучшего понимания ознакомьтесь со статьей по ссылке...

Пример использования Условных тегов

Предположим нам нужно вывести ссылку в подвале и сделать это нужно только на главной странице сайта. Для этих целей в WordPress есть условный тег is_front_page(), или его аналог is_home(). Эти функции вернут true, только в том случае, если страница на которой находится посетитель — это главная страница. В коде это выглядит так:

<?php
if( is_front_page() ){
	echo '<a href="http://site.ru">Текст ссылки</a>';
}
?>

Вместо HTML может быть PHP код, который будет выполнятся только на главной странице. Вместо is_front_page() может быть is_home(). Это похожие условные теги, разницу смотрите ниже.

Список Условных тегов WordPress

Самый полный список условных тегов смотрите по этой ссылке.

is_home() (основная страница)
Возвращает true, если это основная страница блога. Под основной понимается контент установленный для главной страницы, т.е. если установить в настройках (параметры > чтение) показ Постоянной страницы на главной странице, то этот тег будет работать только для этой установленной Постоянной страницы, а не для главной.
is_front_page()(главная страница)

Возвращает true, если вы на главной странице, независимо от того, что установлено в настройках. Страницы пагинации (/page/2 и т.д.) не учитываются.

is_front_page()

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() (страница Постоянной страницы)
Страница типа page. Функция принимает такие же параметры как и is_single(): ID страницы, Заголовок страницы, Слаг страницы или массив из любых этих параметров.
is_page_template() (шаблон страницы)

Если это страница шаблона для Постоянной страницы. Функция может принимать параметр название файла шаблона.

if ( is_page_template() ){ ... } // сработает на постоянной странице, для которой используется отдельный шаблон
if ( is_page_template('my_page.php') ){ ... } // сработает на постоянной странице, для которой используется отдельный шаблон с названием файла my_page.php
is_singular() (любая одиночная страница)
Любая одиночная страница, к ним относятся посты, постоянные страницы и созданные типы записей. Это короткая запись такой проверки: if( is_page() || is_single() ).
is_year() (архив за год)
Архив за год (site.ru/2010)
is_month() (архив за месяц)
Архив за месяц (site.ru/2010/06)
is_day() (архив за день)
Архив за день (site.ru/2010/06/02)
is_time() (архив по времени)
Архив по времени.
is_date() (страница любого типа даты)

Страница даты (общий условный тег). Это короткая запись такой проверки:

if( is_year() or is_month() or is_day() or s_time() )
is_author() (страница автора)

Страницы с выводом постов автора. Функция принимает параметры: ID автора, Имя автора и Ник автора. Так же, можно передать сразу несколько параметров в массиве. Пример записи:

if ( is_author() ) { ... }     // сработает для любых страниц автора
if ( is_author(10) ) { ... }   // сработает если отображается страница автора с ID равным 10
if ( is_author('Виктор') ) { ... } // сработает если отображается страница автора с именем "Виктор"
if ( is_author('Viktor') ) { ... } // сработает если отображается страница автора с Ником "Viktor"
// Вариант с массивом
if ( is_author( array('10','Виктор','Viktor') ) ) { ... }
// сработает если отображается страница  автора с ID 10, или Именем "Виктор", или Ником "Viktor".
к началу
is_archive() (любая страница архива)
Если это любая из страниц типа: категорий, меток, дат, авторов, таксономий (в WP 3.0). Общий условный тег.
is_post_type_archive() (страница архива типа записи)
Если это страница архива произвольного типа записей. Например, у нас есть тип записи knigi и при его регистрации мы указали, что у него есть страница архива, тогда её Url будет такой: site.ru/knigi. Этот условный тег будет срабатывать на такой странице.
is_paged() (страницы пагинации)
Если страницы пагинации (/page/2 или /page/3 и т.д.)
is_category() (страница категории)
Если страница категории.
cat_is_ancestor_of() (является ли одна рубрика дочерней к другой)
Проверяет, является ли одна рубрика дочерней к другой указанной (проверяются все уровни ветки).
is_tag() (страница метки)

Если страница метки. Функция может принимать параметры: Слаг(название) метки или массив из названий. Пример:

if ( is_tag() ) { ... }              // сработает для любых страниц меток/тегов
if ( is_tag('wordpress') ) { ... }    // сработает для страницы метки/тега Слаг (название), которого равен 'wordpress'
// вариант с массивом
if ( is_tag( array('wordpress','tag_name' ) ) { ... }   // сработает для страницы метки/тега Слаг (название), которого равен wordpress или tag_name
is_tax() (страница любой таксономии)

Если это страница любой таксономии (стандартно это страницы категорий или меток). может принимать два параметра, название таксономии и название элемента текущей таксономии:

if ( is_tax('category') ) { ... }                   // сработает, если в запросе открываемой страницы присутствует таксономия category. Тоже самое, что is_category()
if ( is_tax('category','category_slug') ) { ... }   // сработает, если это страница категории, слаг (ярлык) которой равно category_slug. Т.е. для конкретной категории.
// можно передавать массивы
if ( is_tax( array('category','post_tag') , array('tax_name1','tax_name2') ) ) { ... }
// сработает, если это страница категории или метки, название которой равно tax_name1 или tax_name2
к началу
is_search() (страница поиска)
Если страница результатов поиска.
is_404() (страница 404)
Если страница ошибки 404.
is_attachment() (страница вложения)
Если это отдельная страница прикрепленного файла (обычно картинки).
is_admin() (страница админки)
Если это страница админки блога.
is_user_logged_in() (пользователь авторизован)
Срабатывает если юзер залогинен.
current_user_can('право') (проверяет право пользователя)
Проверяет права пользователя, совершать то или иное действие. Право пользователя указывается в параметре функции. Полный список прав смотрите в кодексе. Например: if( current_user_can('manage_options') ){ ... } - это условие проверит, может ли текущий пользователь редактировать опции, обычно такое право есть у пользователя с правами Админимтратора.
have_posts() (есть записи для вывода)
Если текущий запрос ВП вернул данные для построения цикла loop, проще говоря, если есть посты на странице.

Редкие условные теги WordPress (используются редко или предназначены не для шаблонов)

is_sticky() (прилеплен ли пост)
Проверяет прилеплен ли пост. Принимает параметр ID поста. Прилепленные посты должны отображаться вначале цикла loop. Если ID поста не передан в эту функцию, то берется текущий ID из цикла Loop.
is_comment_feed()(страница фида комментариев)
Если страница RSS фида комментариев.
is_comments_popup()(всплывающее окно комментария)
Если это всплывающее окно комментария.
is_preview() (страница предпросмотра записи)
Если это страница предпросмотра поста или постоянной страницы.
is_trackback()
Если текущий запрос (query) - это запрос по трэкбекам.
is_feed() (страница фида записей)
Если страница RSS фида постов.

Условные теги и проверки предназначенные для отдельных страниц или постов

Ниже следующие проверки (условные теги) будут работать только на отдельных страницах, говоря языком этой статьи, если выполняются условия is_single(), is_page() или is_singular()

has_tag() (у поста есть метки)

Если у поста есть метки. Функция может принимать параметр название метки или массив с несколькими названиями меток. Пример:

if ( has_tag() ) { ... }           // сработает если у поста есть хотя бы одна метка
if ( has_tag('tag_name') ) { ... } // сработает если у поста есть метка с названием tag_name
// Вариант с массивом
if ( has_tag( array('tag_name','tag_name2') ) ) { ... }
// сработает если у поста есть метка с названием tag_name или tag_name2
in_category(10) (запись находится в категории 10)
Если запись находится в категории ID которой равен 10. Можно использовать внутри цикла Loop.
have_comments()(у поста есть комментарии)
Если у поста есть комментарии.
pings_open() (открыты уведомления)
Если пост принимает уведомления, т.е. открыты пинги.
$wp_query->query_vars[cpage](страница пагинации комментариев)
Если это страница пагинации комментариев. (/comment-page-1 /comment-page-2 и т.д.)
$post->post_excerpt(у поста есть "Цитата")
Если у поста есть "Цитата" (excerpt).
$post->post_parent == 20(ID родительской страницы равен 20)
Если ID родительской страницы равен 20. Работает только для постоянных страниц. Может также пригодится для вложений (файлы).

Http://azartplay.foot-bol.com/articles/

http://azartplay.foot-bol.com/articles/

Реклама
Условные теги в WordPress 45 комментариев
Полезные 1 Все
  • Кирилл cайт: mindhalls.ru
    @

    Привет! Меня интересует вот такой вопросик. Почему это называется условными тегами, если это функции на php?

    Ответить4 месяца назад #
    • Kama4294

      Точно не знаю, чтобы как-то выделить. «Условные» потому что всегда проверяют какое-то условие. «Теги» потому что часто используются в шаблоне, может в англ. слово tag какое-то еще смысловое значение несет, не знаю. Это типа ветка функций которые можно так вот выделить в группу и потом просто говорить, - используй условные теги... В ВП еще есть понятие Template Tags (теги шаблона) - тоже php функции, которые часто юзаются в шаблоне.

      Ответить4 месяца назад #
      2

Здравствуйте, !

Ваш комментарий