WordPress как на ладони
rgbcode is looking for WordPress developers. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

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
4 комментария
    Войти