Я нахожусь в ночном поиске, чтобы создать пользовательский одноразовый виджет .
Как только один его экземпляр был добавлен на боковую панель в настройщике , его элемент управления на панели «Доступные виджеты» должен отображаться как отключенный (или, наоборот, полностью исчезнуть).
Вот как это будет выглядеть (обратите внимание на визуально «отключенный» виджет справа):
Пользовательский виджет зарегистрирован и все, но я застрял в требовании одноразового использования.
Спекуляции
- Масштаб не проблема. Можно предположить только 1 зарегистрированную боковую панель. Подход может заключаться в том, чтобы ограничить использование виджета либо 1 на боковую панель, либо 1 на все зарегистрированные боковые панели - и то, и другое было бы одинаково хорошо на данный момент.
- Страница виджетов на сервере не является проблемой. Это не обязательно должно работать одинаково хорошо на странице виджетов в разделе « Внешний вид» на серверной части. Это должно работать только в настройщике.
Вопросов
- Около 250 лет назад все виджеты были «одноразовыми». Кто-нибудь знает законный способ вернуть те времена и сделать так, чтобы пользовательский виджет использовался только 1 раз через Widget API?
- Если нет (то, что я предполагаю после того, как вырыл изрядное количество основных файлов), я бы, вероятно, предпочел подход, основанный на CSS (события указателя, наложение псевдоэлемента, что угодно). Поможет ли моя любезная душа моим очень ограниченным знаниям Customizer / JavaScript базовым подходом к тому, как добавить / удалить выделенный класс CSS к элементу управления виджета на панели «доступны» (тот, что справа), как только экземпляр указанного виджета были добавлены / удалены на боковую панель?
Что я пробовал до сих пор
- Выкопал изрядную часть основных файлов.
- Прочитайте это , и это , но ни один не кажется практичным.
- Возился с JQuery событий
widget-added
,widget-updated
иwidget-synced
, но пропустить событие для «виджет удален».
Большое спасибо заранее!
Обновление: пока не разместите мои доказательства концепции в публичном репо, сделаю, конечно.
Решение
Я обернул решение, любезно предоставленное kraftner ниже, в плагин проверки концепции на GitHub .
WP_Widget
, например: gist.github.com/westonruter/7141599