Intereting Posts
Настройка шаблона основного текста WordPress Перемещение wordpress multi в другой домен и vhost – невозможно войти в систему и проблемы с меню Используйте привязку для открытия iframe внутри страницы WordPress Новые сайты WordPress Multisite в каталоге Термины таксономии не могут найти сообщения из archive.php или taxonomy.php Использовать REGEXP в WP_Query ключ meta_query Могу ли я использовать точно такую ​​же функцию для дезинфекции данных из двух разделов раздела разницы? Rest Api v2 orderby meta_key в пользовательском типе сообщения как эхо метатег в заголовке с помощью php Плагин должен позволять подписчикам публиковать статьи на передней панели без одобрения администратора Как получить все сообщения, связанные с таксономией? Обзор плагина с рейтингом post Переименование таксономии по умолчанию? Шаблон перенаправления шаблона загружен, но заголовок 404 как я могу разработать глобальную навигацию и локальную навигацию, чтобы быть динамикой 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 выкинет запросы до того, как они ударят ваше действие.