- Условные теги в WordPress
- Пример использования Условных тегов
- Список Условных тегов WordPress
- Условные теги и проверки предназначенные для отдельных страниц или постов
- Редкие условные теги WordPress (используются редко или предназначены не для шаблонов)
- Условный тег: is_front_page
- Вывод текста только на главной WordPress.
Условные теги в WordPress
С условными тегами очень тесно связана иерархия файлов темы.
ВАЖНО: нельзя использовать теги до срабатывания хука parse_query , то есть их нужно использовать начиная с хука wp , потому что до этого хука еще нет данных для правильной работы условных тегов (не заполнены глобальные переменные, которыми пользуются условные теги).
Таким образом, условный тег не будет работать, если использовать его в теле файла темы functions.php , потому что этот файл подключается раньше чем срабатывает хук wp . Обычно условные теги в файле functions.php используются внутри других функций или хуков.
Пример использования Условных тегов
Предположим нам нужно вывести ссылку в подвале и сделать это нужно только на главной странице сайта. Для этих целей в WordPress есть условный тег is_front_page(), или его аналог is_home(). Эти функции вернут true, только в том случае, если страница на которой находится посетитель — это главная страница. В коде это выглядит так:
Вместо 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() (страница 404)
- is_attachment() (страница вложения)
- is_admin() (страница админки)
- is_user_logged_in() (пользователь авторизован)
- current_user_can(‘право’) (проверяет право пользователя)
- have_posts() (есть записи для вывода)
- has_tag() (у поста есть метки)
- in_category( 10 ) (запись находится в категории 10)
- have_comments() (у поста есть комментарии)
- pings_open() (открыты уведомления)
- $wp_query->query_vars[cpage] (страница пагинации комментариев)
- $post->post_excerpt (у поста есть «Цитата»)
- $post->post_parent == 20 (ID родительской страницы равен 20)
Функция принимает параметры: 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() (архив за год) Архив за год (example.com/2010) is_month() (архив за месяц) Архив за месяц (example.com/2010/06) is_day() (архив за день) Архив за день (example.com/2010/06/02) is_time() (архив по времени) Архив по времени. is_date() (страница любого типа даты)
Страница даты (общий условный тег). Это короткая запись такой проверки:
if( is_year() or is_month() or is_day() or s_time() )
Страницы с выводом постов автора. Функция принимает параметры: 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 будет такой: example.com/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
Если это страница любой таксономии (стандартно это страницы категорий или меток). может принимать два параметра, название таксономии и название элемента текущей таксономии:
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, проще говоря, если есть посты на странице.
Условные теги и проверки предназначенные для отдельных страниц или постов
Следующие условные теги (проверки) будут работать только на отдельных страницах, говоря языком этой статьи, если выполняется условие: is_single() , is_page() или is_singular()
Если у поста есть метки. Функция может принимать параметр название метки или массив с несколькими названиями меток. Пример:
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. Работает только для постоянных страниц. Может также пригодится для вложений (файлы).
Редкие условные теги WordPress (используются редко или предназначены не для шаблонов)
- is_sticky() — Проверяет прилеплен ли текущий пост к главной странице сайта. Условный тэг.
- is_comment_feed() — Проверяет, является ли запрос, страницей фида комментариев. Условные тег.
- is_comments_popup() — Determines whether the current URL is within the comments popup window.
- is_preview() — Проверят находится ли пользователь на странице предпросмотра записи. Условный тег
- is_trackback() — Проверяет, является ли текущий запрос запросом на страницу пингов (trackback)
- is_feed() — Проверяет запрашивается ли в текущий момент фид.
Условный тег: is_front_page
Тег проверяет вывод главной страницы блога. Он срабатывает и при выводе на главной странице блога статической страницы и при выводе записей. При использовании статической страницы в качестве главной для определения главной страницы блога с записями необходимо использовать условный тег is_home. Этот условный тег является boolean-функцией, то есть он возвращает только true или false.
Внимание! «Главная страница блога» и «главная страница блога с записями» это разные понятия, совпадающие по смыслу только, если в качестве главной страницы выбран вывод последних записей.
В функции нет никаких параметров.
Возвращает true при выводе главной страницы блога и false в противном случае.
1 Проверка на вывод главной страницы блога
if( is_front_page() ) echo "Это главная страница блога"; else echo "Это не главная страница блога"; ?>
Внимание! Если на главной странице блога выводятся записи, а не статическая страница, то is_front_page() сработает и на страницах, образованных постраничной навигацией (/page/2 и др).
2 Использование с условным тегом is_paged
Данный код определяет главную страницу блога, исключая страницы, образованные постраничной навигацией.
if( is_front_page() && !is_paged() ) echo "Это главная страница блога"; else echo "Это не главная страница блога"; ?>
Функция добавлена в версии 2.5.0
Функция is_front_page() находится в wp-includes/query.php
Понравился пост? Подпишись на обновления по RSS или Twitter !
Комментариев пока еще нет.
Вывод текста только на главной WordPress.
Доброго времени суток!
Иногда на блоге нужно организовать такой блок, который выводился бы только на главной. Многие скажут — вставить код в index.php и все дела.По сути так оно и есть, но это если блок внутри контента, а если его нужно вывести в сайдбаре, подвале или шапке? То есть посетитель заходит на сайт и видит на главной небольшое текстовое описание, о чем собственно сайт, что здесь можно найти и т.п., а перейдя на внутреннюю страницу — этот блок меняется. Как пример:
- на главной отображается текстовый блок.
- на всех остальных страницах на этом месте, рекламный баннер.
Впервые я столкнулся с такой задачей, на создании шаблона для онлайн кинотеатра. Заказчик попросил сделать так, чтобы в подвале сайта на главной был текст на 4 тысячи символов, а на остальных нет.
Как оказалось эту задачу легко сделать с помощью условного оператора WordPress — is_front_page()
Размещаем данный код в нужном месте и заполняем.
В моем случаи текст должен просто исчезать на других страницах. Поэтому я использовал вот такой код, в который можно без проблем вставить html.
Вот и все, что нужно для осуществления поставленной задачи.
На этом все. Спасибо за внимание 🙂
Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини 🙂