Intereting Posts
Текущее имя таксономии (не термин!), Учитывая идентификатор сообщения Добавить атрибут placeholder в поля формы комментариев Как получить название таксономии от пули? Хороший способ сохранить резюме в WordPress? ajax load больше плагина не работает Как использовать функциональность wordpress вне рамок WP Пользовательский фон не отображается Функциональность Sticky Post по умолчанию с WP_Query игнорируется при использовании AJAX Использование ob_start () в плагине Порядок загрузки сценария и шаблона темы Предварительно заполнять данные профиля члена BuddyPress в Gravity Forms Как изменить URL-адрес приложения wordpress и защитить его? Отображение подстраниц в то время как на родительской странице? Как добавить будущие сообщения в новую функцию «Внутреннее связывание» Результаты поиска, упорядоченные по пользовательским типам сообщений, не группируются

Почему я не могу подключиться к save_posts после admin_init?

Я пытаюсь подключиться к действию save_post из обратного вызова AJAX в моем плагине, но он, похоже, не работает. Фактически, подключение к «save_posts» работает только с нескольких ключевых точек выполнения действия (например, «init» или «admin_init»), но не от других (например, обратный вызов «add_meta_boxes»).

В моем конкретном случае я хотел бы нажать кнопку на экране «Редактировать сообщение», чтобы добавить новый пользовательский метабокс, и чтобы он правильно сохранил данные метабокса. Но, конечно, к тому времени, как я нажму эту кнопку и добавлю этот обмен, я уже однажды активировал действие save_post, и WP, похоже, не хочет, чтобы я снова зацепил его.

Вкратце рассмотрев исходный код WP, я не вижу никаких очевидных причин, по которым я не смог бы снова подключить это действие. Любые идеи, как обойти это очевидное ограничение или, по крайней мере, объяснение, почему он не работает?

Solutions Collecting From Web of "Почему я не могу подключиться к save_posts после admin_init?"

Добавление функции в hooks – это работа во время выполнения, она не является постоянной. Независимо от того, какую операцию вы выполняете в действиях Ajax – они выполняются в отдельном экземпляре WP и истекают, как только возвращается ответ Ajax. Они не влияют на загруженную страницу.

Вероятно, вам нужно save_post свои функции к save_post как обычно (не в действии Ajax), и проверить, будет ли ваш дополнительный обменный код работать с ним.

Я буквально стучал головой по связанной проблеме, и это первое, что я читал в Интернете, которое дало твердый указатель на то, что я делал неправильно.

Оказывается, add_meta_boxes вызывается позже save_post , поэтому вам нужно будет настроить купон сохранения до создания метабокса. Поначалу кажется интуитивно понятным, но разметка обычно генерируется ПОСЛЕ WordPress, проходящей через ее обработку, поэтому имеет смысл, что крючки устанавливаются до визуализации метабокса.

К счастью, у меня было немного кода, связанного с крюком admin_init , который срабатывает перед save_post поэтому стало очень легко исправить эту проблему.

Еще раз спасибо за сообщение этого вопроса. Это было не совсем то, что я искал, но он намекнул на ответ на проблему.