Я хотел бы программно добавить виджеты на две боковые панели, которые у меня есть. Я не мог найти какой-либо официальный способ сделать это?
Я начал искать в базе данных. Я обнаружил, что это опция ‘sidebars_widgets’, которая помещает виджеты на боковые панели. При просмотре опций к именам виджетов добавляется номер, добавленный в конец, например: widget_name-6. Откуда этот номер?
Есть идеи, как это исправить?
Демо виджет
Чтобы лучше проиллюстрировать внутреннюю работу, я написал очень простой демонстрационный виджет:
Основы темы
Сначала вы должны зарегистрировать некоторые боковые панели и пользовательский виджет. Правильное действие для этого легко запомнить:
'widgets_init'
. Поместите все в контейнер — класс или функцию. Для простоты я буду использовать функцию с именемt5_default_widget_demo()
.Весь следующий код входит в
functions.php
. КлассT5_Demo_Widget
уже должен быть загружен. Я просто положил его в тот же файл …Тема готова к виджету, em> демонстрационный виджет известен.
Виджеты не добавляются, когда боковые панели не пусты.
Я использовал то, что было описано в этом вопросе, чтобы создать фрагмент кода, который можно использовать для очень простой инициализации боковых панелей. Он очень гибкий, вы можете создавать столько виджетов, сколько захотите, без необходимости вообще изменять код. Просто используйте зацепки фильтра и передайте аргументы в массиве. Вот прокомментированный код:
Это вспомогательная функция, которая проверяет, есть ли на боковой панели уже содержимое: p>
Теперь нам нужно создать функцию, которая подключается к действию ‘sidebar_init’. p>
А теперь инициализация виджета: p>
Последнее действие — создать виджеты на каждой боковой панели: p>
Эта функция используется для отслеживания того, сколько экземпляров определенного виджета уже было определено: p>
Последнее, что нам нужно сделать, — это назначить значения. Используйте эти функции фильтра:
And:
В идеале вы должны вызывать initialize_sidebars в функции настройки, которая вызывается при активации плагина или темы, например:
Активация темы: p>
Plugin activation:
Вот как вы это делаете: p>
(ВНИМАНИЕ, это может УДАЛИТЬ все предыдущие виджеты, если вы не вернули исходные виджеты в массив
widgets code>.) p>
-number можно использовать, если позже вы захотите добавить опции в виджет с чем-то вроде этого: p>