Intereting Posts
Как загрузить несколько изображений с помощью WP_Customize_Media_Control Изменение формата заголовка страницы (при использовании заголовка) Можете ли вы получить данные ACF из списка сообщений о статусе сообщения? Проблемы с настраиваемым типом сообщения Активировать плагин через PHPMyAdmin или FTP? Как я могу указать размер изображения, предоставленного the_content () ;? Текущий блог возвращает идентификатор 1 вместо идентификатора блога пользователей? Панель инструментов WordPress – это slooow. Передняя часть быстро Сжимать медиафайлы в каталоге загрузок через терминал linux, исключая миниатюры? Поле выбора сохраняет, но не обновляет значение в admin Изменение базы данных: пользователи, голосовавшие Панель инструментов / верхняя панель отсутствует на главной странице? WordPress для очень большого сайта Регистрация Крюки не работают Изменить шаблон страницы программно?

Лучший способ для плагина принимать POST?

Проблема: я разрабатываю плагин, который должен принимать данные POST (веб-узлы из внешнего источника). У меня нет контроля над форматом данных POSTED. Мой единственный вариант для передачи моих собственных данных – это URL-адреса, переданные при регистрации веб-камеры.

До сих пор я придумал 3 идеи, ни одна из которых не кажется идеальной, но две из них определенно будут работать (я не думаю, что № 2 может работать …). Я надеюсь, что есть чистый способ добиться этого, не взломав WordPress слишком плохо.

  1. Направьте webhook на дом WP и просто слушайте в моем плагине для публикации (на основе некоторого произвольного параметра URL, который я бы включил в веб-приложение). Моя проблема заключается в том, что через полное создание страницы WordPress просто для получения POST требуется намного больше накладных расходов, чем это необходимо.

  2. По ходу моего исследования я нашел XML-RPC, который выглядел многообещающим, пока я не увидел, что он зависит от тела POST, содержащего информацию о вызове. Очевидно, что это не сработает. Есть ли какое-либо обходное решение, которое мне не хватает, или это тупик?

  3. Проводка непосредственно по URL-адресу в плагине. Затем требуется ручная загрузка WP. Не в целом идеальный …

Solutions Collecting From Web of "Лучший способ для плагина принимать POST?"

Один из вариантов заключается в использовании техники add_rewrite_endpoint , о которой я упоминаю в своем комментарии.

Другой вариант – использовать admin_post_{action} .

Например, вы можете использовать POST-данные для вашего URL-адреса с параметром GET action :

http://www.example.com/wp-admin/admin-post.php?action=my_plugin_action

Затем подключите это действие через admin_post_nopriv_my_plugin_action чтобы получить этот запрос и обработать данные:

 function wpd_my_plugin_action() { status_header(200); // do stuff echo $_POST['somedata']; die; } add_action( 'admin_post_nopriv_my_plugin_action', 'wpd_my_plugin_action' ); 

Оба варианта загружают WordPress без запуска основного запроса и загрузки шаблона.

EDIT: чтобы разрешать входящие POST-сообщения, вы должны подключиться к allowed_http_origin или allowed_http_origins (этот фильтр будет работать, только если POSTER устанавливает HTTP_ORIGIN ), иначе WordPress выкинет запросы до того, как они ударят ваше действие.