Таким образом, у меня есть метабокс, который я хочу активировать при включении поста в Javascript (чтобы обновить страницу в этом случае).
В Classic Editor это можно сделать с помощью простого перенаправления save_post
(с высоким приоритетом)
Но поскольку Гутенберг теперь преобразует процесс сохранения существующих метабоксов в отдельные вызовы AJAX, он должен быть javascript, поэтому как мне это сделать:
Прислушаться к событию, когда все процессы сохранения завершены, а затем вызвать JavaScript? Если так, то как называется это событие? Есть ли еще ссылка на эти события? ИЛИ
Запустить javascript внутри AJAX-процесса сохранения метабокса, который затем может проверить состояние процесса сохранения родительской страницы перед продолжением?
javascript
metabox
block-editor
majick
источник
источник
wp.data
хранилищ данныхwp.data.select('core/editor').isSavingPost()
... этот вид доступа не документирован нигде, как я вижу ... и он также кажется ненадежным, так как он возвращаетfalse
после первого сохранения поста (до того, как он не определен), сохраняет ли редактор по-прежнему или нет. FacepalmОтветы:
Не уверен, что есть лучший способ, но я слушаю,
subscribe
а не добавляю прослушиватель событий к кнопке:Официальные документы с данными Редактора сообщений: https://wordpress.org/gutenberg/handbook/designers-developers/developers/data/data-core-editor/
источник
subscribe
метод? это частьwp.data
функции? Я не вижу упоминаний в документах.subscribe
это метод модуля wp.data . Откройте консоль при редактировании поста с Гутенбергом и запуститеwp.data
. Здесь перечислены все доступные методы модуля данных.wp.data
модели. это возвращается к PHP (и классический редактор) для меня.Ладно, так гораздо более хакерское решение, чем я хотел, но оно заработало ...
Вот несколько упрощенный и абстрагированный способ сделать это из моего кода, на случай, если кому-то понадобится сделать то же самое (как я уверен, в ближайшем будущем будет больше плагинов).
... просто нужно изменить
metabox_input_id
иtrigger_value
соответствовать по мере необходимости. :-)источник
Вам нужно собрать функцию отписки от подписки и вызова, чтобы избежать множественного времени вызова.
источник