AH Display Widgets
Плагин позволяет скрывать или наоборот отображать виджеты по условию, т.е. в зависимости от текущей страницы сайта.
Он пригодится, например, когда нужно:
- скрыть виджет поиска на странице с результатами поиска.
- скрыть виджет последних записей на главной странице сайта
- скрыть виджет на определенной языковой версии сайта (при использовании плагина WPML)
- и т.д.
Причин скрывать виджет на конкретной странице может быть тысячи: начиная от юзабилити заканчивая дублированием контента.
Display Widgets - простой в освоении плагин и отлично выполняет свою задачу, удобен для тех, кто не знает как использовать условные теги WordPress (считай, программировать) - все делается мышкой в админке.
Настройки виджета
После активации плагина к оригинальным настройкам виджета добавляются три новых:
- Выбор, кому показывать виджет - всем пользователям, или только авторизованным (вошедшим), или только неавторизованным (не вошедшим).
- Что делать с виджетом - скрывать или отображать по условию, которое зададим ниже.
- В каком разделе сайта применять правила, указанные в пункте 1 и 2.
По умолчанию всегда выбрано «Скрыть на выбранных страницах», потому после активации плагина ничего не произойдет и виджеты будут отображаться как и раньше. Чтобы скрыть виджет ему нужно указать условие скрытия.
Пример скрытия виджета
Большинство тем WordPress построены так, что на главной странице выводятся последние (свежие) записи и дополнительно в сайдбаре отображается виджет "Свежие записи", который по сути дублирует ленту. Избавимся от него, но только на главной странице - на других страницах он полезен. Для этого зайдем на страницу с виджетами и отредактируем с условием нашей задачи, а именно:
- Показывать виджет всем
- Скрыть на выбранных страницах
- Ставим галочку на пункте "Главная"
Всё просто!
Теперь на главной странице виджет не отображается, а на всех остальных он присутствует. Примеров можно привести много (5 примеров присутствуют в видео), но суть работы с плагином неизменна.
Подобные настройки доступны для любого виджета, как стандартного, так и предоставляемые темой, плагинами или самописные.
Пользоваться плагином AH Display Widgets несложно и для неискушенного программированием администратора он сослужит добрую службу.
Недостатки
- Непрозрачное поведение при указании правил для рубрик
- В списке нет
Записей
, приходится вписывать их ID вручную. Впрочем, это не совсем недостаток, потому что чтобы за список получился, когда на сайте несколько тысяч записей?
Вопросы и ответы
Почему я не вижу настроек у виджетов
Это известное ограничение. Виджеты, написанные в pre-2.8 формате не имеют хуков, позволяющие AH Display Widgets управлять виджетами.
Мои виджеты не отображаются при активации
Это возможно при работе с некоторыми плагинами или темами. Чтобы скорректировать такое поведение виджетов, добавьте в functions.php темы или файл плагина следующий код:
add_filter( 'dw_callback_trigger', 'dw_callback_trigger' ); function dw_callback_trigger(){ return 'wp_head'; // измените на: plugins_loaded, after_setup_theme, wp_loaded, wp_head или другой хук на выбор }
Restrict Widget — еще плагин для скрытия виджетов
Restrict Widgets - еще один плагин по логике копия Display Widgets. Только более новый плагин от компании dFactory.
Widget Logic — еще плагин для скрытия виджетов
Widget Logic - плагин для тех, кто знает что такое условные теги и с чем их едят. Этот плагин с большими возможностями.
Условия тут задаются как и в AH Display Widgets - на странице виджетов, но не мышкой, а нужно вписывать сами условные теги или PHP условия, именно за счет этого в Widget Logic можно создавать сложные условия, хотя как правило это не нужно.
Примеры условий
-
is_home()
главная страница сайта -
! is_page('about')
везде кроме страницы about -
! is_user_logged_in()
показать когда юзер не авторизован -
is_category( array(5,9,10,11) )
показать в любой из указанных категорий: 5,9,10,11 -
is_single() && in_category('baked-goods')
показать на отдельной странице записи и только если запись находится в рубрике 'baked-goods' -
current_user_can('manage_options')
только для администратора -
strpos($_SERVER['HTTP_REFERER'], "google.com") != false
показать виджет, только если пользователь пришел из поиска Гугл -
is_category() && in_array($cat, get_term_children( 5, 'category'))
показать на странице рубрики 5 или на любой вложенной в нее рубрике -
global $post; return ( in_array(77,get_post_ancestors($post)) );
на любой дочерней странице, страницы 77 - global $post; return ( is_page('home') || ($post->post_parent == '13') );
на странице 'home' или дочерней странице, страницы 13