Intereting Posts
Настройка изображений продукта WooCommerce (размещение и размер) Возможно ли создать отдельную страницу для пользовательской галереи сообщений? Где я должен добавить необходимый код для добавления дополнительного атрибута в массив тегов kses? Добавить в запрос для the_content () на одной странице Дайте администратору сайта возможность «пропустить подтверждение по электронной почте» при добавлении нового пользователя Сортировка сообщений по категориям? Укажите ABSPATH в URL-адресе jQuery. В чем разница между бизнес-планом WordPress и самостоящим WordPress (перспектива разработчика WordPress)? Получать сообщения в закладках фундамента и вкладках, разделенных на 3 строки контролирует, прикреплена ли загрузка к сообщению или нет «Ob_start … return ob_get_clean» и использование короткого кода – избыточное закрытие p-тегов в html Страница настройки WordPress не может быть сохранена с помощью html-радио Как добавить класс в сообщение по пользовательской роли автора Как получить краткое описание под заголовком – Visual Composer Добавление пользовательского PHP в существующий цикл в книге Бытия

Лучший способ для плагина принимать 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 выкинет запросы до того, как они ударят ваше действие.