• Всем привет! Есть задача: Необходимо скрыть виджет на определенной странице.

    Есть код.. почти рабочий…

    add_filter( 'widget_display_callback', 'hide_widget_pages', 10, 3 );
    
    function hide_widget_pages( $instance, $widget, $args ) {
      if ( $widget->id_base == 'meta' ) { // Указываем ID виджета
         if ( !is_page( 'http://test1.ru/?p=1' ) ) {    // Адрес страницы
             return false;
         }
      }
    }

    Код работает, виджет скрывается.. но при этом все прочие текстовые виджеты (произвольный текст) выдают пустые значения, а встроенные в вордпресс (архив, категория и тд..) работают без проблем. В чем может быть причина?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Yui

    (@fierevere)

    永子

    is_page принимает аргументом не url а id страницы, слаг или заголовок
    http://wp-kama.ru/function/is_page

    https://ru.wordpress.org/plugins/widget-visibility/
    вообще вот, есть хороший плагин

    да,

    if ( !is_page( 'http://test1.ru/?p=1' ) ) { // Адрес страницы
    return false;
    }

    данный кусок можно вообще выкинуть и поставить какое-либо условие и всё равно не будет работать так, как нужно. Использоваться плагин — не вариант, где то должно быть решение.

    Я так понимаю, что виджеты инициализируются, но переменные не передаются. Это именно в ТЕКСТОВЫХ виджетах такое.. й

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    А где return $instance в конце функции?

    Точно! Так вот работает

    add_filter( 'widget_display_callback', 'hide_widget_pages', 10, 3 );
    
    function hide_widget_pages( $instance, $widget, $args ) {
    
    if ( $widget->id_base == 'my_widget_name' )
    { // Указываем ID виджета
      //  if (Тут ставим условие, при котором будет скрываться виджет {
        return false;
      //  }
    }
     else
     {
       return $instance;
     }
    
     }

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Необходимо скрыть виджет на определенной странице» закрыта для новых ответов.