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

Сегодня столкнулся с проблемой получения содержимого виджета.

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

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

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

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

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

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

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

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

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

2 комментария

  1. Виктор 2 года назад
  2. Виктор 2 года назад

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