Как выяснилось в WP нет стандартной функции, которая возвращает содержимое виджета. Есть функция dynamic_sidebar, но она только выводит это содержимое. Сохранить значение в переменную невозможно.
(Поправка) Утверждение выше, конечно же, неверное. В PHP можно записать вывод на экран в переменную с помощью функции ob_start().
Мне же нужно перед выводом виджета определенным образом его обработать, а уже потом вывести.
Решение я такое нашел. Может кому-нибудь пригодится, а то мне пришлось 2 часа разбираться, пока понял, как сделать.
Виджеты хранятся в таблице options. Таким образом сначала получаем их с помощью функции get_option(‘widget_mywidget’).
Как я понял, все виджеты одного типа, например, текстового, хранятся в одной переменной в виде массива. Так, текстовые переменные хранятся в переменной widget_text, то есть массив с такими элементами получаем через следующий вызов — get_option(‘widget_text’).
Если у вас данные хранятся в виджете другого типа, но нужно сначала понять, в какой переменной они хранятся. Сделать это можно сделав поиск части содержимого вашего виджета в таблице options.
Каждый элемент полученного массива содержит вложенный массив. Там есть элемент title — заголовок виджета и text — его содержимое (то, что мне было нужно).
Остается только найти нужный элемент в массиве. Я ищу по его заголовку, у меня это «Баннеры»
Код получился такой:
1 2 3 4 5 6 7 |
$w = get_option('widget_text'); // массив элементов foreach ($w as $value ) { if ( $value['title'] == 'Баннеры' ) { $ban = trim($value['text']); // нужное значение break; } } |
В переменной $ban в итоге оказывается нужное мне содержимое.
У нас вы можете заказать сайт на Вордпресс, а также доработку и оптимизацию сайта на Wordpress.
Огромная благодарность Вам!
Еще такие вопросы:
1. Как выводить содержимое текстового виджета по его ID
2. Как выводить содержимое других виджетов, например этого виджета: WP Editor Widget — https://ru.wordpress.org/plugins/wp-editor-widget
3. Где подробно посмотреть о возможных параметрах: get_option(‘widget_text’);
С пунктами 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