Как получить содержимое виджета Wordpress

Как выяснилось в WP нет стандартной функции, которая возвращает содержимое виджета. Есть функция dynamic_sidebar, но она только выводит это содержимое. Сохранить значение в переменную невозможно.

(Поправка) Утверждение выше, конечно же, неверное. В PHP можно записать вывод на экран в переменную с помощью функции ob_start().

Мне же нужно перед выводом виджета определенным образом его обработать, а уже потом вывести.

Решение я такое нашел. Может кому-нибудь пригодится, а то мне пришлось 2 часа разбираться, пока понял, как сделать.

Виджеты хранятся в таблице options. Таким образом сначала получаем их с помощью функции get_option(‘widget_mywidget’).

Как я понял, все виджеты одного типа, например, текстового, хранятся в одной переменной в виде массива. Так, текстовые переменные хранятся в переменной widget_text, то есть массив с такими элементами получаем через следующий вызов — get_option(‘widget_text’).

Если у вас данные хранятся в виджете другого типа, но нужно сначала понять, в какой переменной они хранятся. Сделать это можно сделав поиск части содержимого вашего виджета в таблице options.

Каждый элемент полученного массива содержит вложенный массив. Там есть элемент title — заголовок виджета и text — его содержимое (то, что мне было нужно).

Остается только найти нужный элемент в массиве. Я ищу по его заголовку, у меня это «Баннеры»
Код получился такой:

В переменной $ban в итоге оказывается нужное мне содержимое.

Оцените статью

    Нужна доработка сайта?

    Напишите, что нужно сделать. В рабочее время отвечу в течение 30 минут.




    Делаем сайт своими руками
    Комментарии: 2
    1. Виктор

      Огромная благодарность Вам!

      Еще такие вопросы:
      1. Как выводить содержимое текстового виджета по его ID
      2. Как выводить содержимое других виджетов, например этого виджета: WP Editor Widget — https://ru.wordpress.org/plugins/wp-editor-widget

      3. Где подробно посмотреть о возможных параметрах: get_option(‘widget_text’);

      Ответить
    2. Виктор

      С пунктами 1 и 2 разобрался.

      2. Для плагина WP Editor Widget содержимое виджета можно получить задав такие параметры:
      $widgets = get_option(‘widget_wp_editor_widget’); // массив виджетов визуального редактора
      foreach ($widgets as $value ) {
      if ( $value[‘title’] == ‘Заголовок’ ) {
      $text = trim($value[‘content’]); // нужный виджет
      break;
      }
      }
      echo $text;

      3. https://codex.wordpress.org/Справочник_по_функциям/get_option

      Ответить
    Добавить комментарии