Widget Logic — бесплатный плагин для настройки динамического отображения виджетов
Widget Logic — простой и бесплатный плагин для настройки отображения виджетов, но он требует знаний условных тегов WordPress (Conditional Tags).
Используя эти теги вы можете задать логику отображения виджета для любой страницы, категории, записи, архива или произвольного типа записей. Вы также можете создавать группу условных тегов для отображения отдельного виджета.
Установка плагина Widget Logic
Страница плагина на сайте wordpress.org
После установки плагина Widget Logic, в каждом виджете появится дополнительное поле для ввода условных тегов. Условные теги — это логические условия, которыми определяется отображение виджетов.
Для виджета, для которого хотим указать логику отображения указываем условные теги, например, отображать этот виджет только на главной странице сайта: is_home()
Список условных тегов
При копировании конструкций условных тегов на свой сайт — исправляйте кавычку.
Главная страница
is_home() — выводить виджет только на главной странице
!is_home() — вывести виджет всюду, кроме главной страницы
Записи
is_single() — только в записях
is_single(‘345') — только в записи c ID 345
is_single(‘auto') — в записи с названием ‘auto'
is_single(‘Полезные плагины ‘) — только в записи с названием «Полезные плагины»
is_single(array( 17, 21, 24, 32)) — указываем массив записей, только в записях с ID 17, 21, 24 и 32
is_single (array(17, ‘Полезные плагины', ‘auto')) — только в записи ID которой 17, заголовок которой «Полезные плагины» и названием ‘auto'
is_single() && in_category(‘baked-goods') — отображать виджет только в отдельных записях, которые относятся к категории с ярлыком baked-goods. Но, записи не будут отображаться на странице этой категории.
Категории записей
is_category() — выводить виджет только в категориях записей
is_category(‘5') – выводить виджет только в категории с ID которой 5;
is_category() && in_array($cat, get_term_children( 5, ‘category')) — отображать виджет в дочерней категории, которая относится к категории с ID 5
!in_category( array( 4,5,6 ) ) — не отображать виджет в категориях с ID 4, 5, 6
Пример:
Вывести виджет в определенной категории (архив категорий 166 и 189) и в отдельных записях этих категорий:
is_category (array(166, 189)) || is_single () && in_category (array(166, 189))
Архивы записей
is_search () — отображать только на странице поиска
is_archive () — отображать только на страницах архива записей
is_date() — отображать виджет на странице архива по дате (сюда входит день, месяц, год)
is_year() — отображать виджет на странице архива за определенный год
is_month() — отображать виджет на странице архива за определенный месяц (ежемесячный архив)
is_day() — отображать виджет на странице архива за определенную дату (ежедневный архив)
Теги
is_tag( ‘mild' ) — отображать виджет на архивной странице тега с ярлыком mild
has_tag( ‘mild' ) — отображать виджет только на странице отдельной записи, для которой указан тег с ярлыком mild
Страницы
is_page() – выводить только на страницах
is_page(‘5') – выводить только на странице, ID которой 5
is_page(‘Контакты') – только на странице с названием «Контакты»
is_page( 2, 3, 4) — выводить виджет только на страницах, ID которых 2, 3 и 4
!is_page(‘about') — отображать виджет везде на сайте, кроме страницы About
is_404() — показать виджет на странице Ошибка 404
is_page_template() — отображать виджет только на странице с определенным шаблоном
Пользователи
is_admin()- отображать виджет только администратору сайта
current_user_can(‘level_10') — отображать виджет только администратору сайта
!is_user_logged_in() — отображать виджет только для гостей
is_author(‘4') — отображать виджет только для автора с ID 4
Переходы из поиска
strpos($_SERVER['HTTP_REFERER'], "google.com")!=false
Виджеты будут отображаться только тем пользователям, которые попали на сайт из поиска Google.
Woocommerce
is_woocommerce() — выводить только на страницах магазина
!is_woocommerce() — не выводить на страницах магазина
!is_woocommerce() && !is_page(cart) — не выводить виджет на странице магазина и не выводить на странице корзины
На страницах категорий:
is_product_category( ‘shirts' ) — выводить виджет, если выбрана категория shirts (страница архива)
is_product_category( array( ‘shirts', ‘games' ) ) — выводить виджет, если выбраны категории shirts и/или games (страница архива)
is_product_tag( ‘shirts' ) — выводить виджет, если выбран тег shirts (страница архива)
На страницах товаров:
has_term( «shirts», «product_cat» ) — выводить виджет на странице товара, если он принадлежит к категории shirts
is_product() — выводить виджет на страницах всех товаров
или
is_single()&&(get_post_type()=='products')
На страницах:
is_cart() — выводить виджет на странице корзины
is_checkout() — выводить виджет на странице оформления
is_account_page() — выводить виджет на странице профиля
Виджет можно выводить указав в качестве условия ярлык урла страницы:
is_wc_endpoint_url( ‘order-pay' ) — оплата заказа
is_wc_endpoint_url( ‘view-order' ) — просмотр заказа
is_wc_endpoint_url( ‘edit-account' ) — редактирование профиля
Произвольные типы записей
is_post_type_archive(‘property') — отображать виджет на архивной странице записей произвольного типа Недвижимость
is_post_type_archive(‘property-type') — отображать виджет на архивной странице записей произвольного типа Недвижимость — Тип недвижимости (любой тип)
Примечание: это просто пример. Для каждого шаблона автор может использовать свои произвольные типы записей.
Пример:
is_front_page() && !is_page(contact) && !is_post_type_archive('property-contract') && !is_post_type_archive('property-type') && is_page()
Показать виджет на главной странице и на любой странице сайта, кроме страницы с ярлыком contact, а также запретить отображение виджета на архивной странице произвольного типа записи с ярлыком property-type (тип недвижимости).