Как к своему php файлу подключить функции?

186
19 декабря 2018, 11:50

Создал плагин WP, в папке с плагином создал второй php файл, который выполняет post cURL запрос и к нему разрешен прямой доступ.

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
$body = array(
    'id' => '1',
    'user_id' => '100'
);
$args = array(
    'body' => $body
);
$response = wp_remote_post( 'https://site.ru/test.php', $args );
$body = wp_remote_retrieve_body( $response );
echo $body;

Как обойтись без подключения строки require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');?

Писал в WP, меня отправили на страницу с рекомендациями:

Если вам нужно иметь ‘страницы’ прямой доступ с помощью внешнего сервиса, то вы должны использовать query_vars и/или переписать правила, чтобы создать виртуальную страницу, которая вызывает функцию.

Пожалуйста, ознакомьтесь с плагинами справочник по API для получения дополнительной информации: http://codex.wordpress.org/Plugin_API

если вы пытаетесь использовать AJAX, пожалуйста, прочитайте это: http://codex.wordpress.org/AJAX_in_Plugins

Для других возможностей, или лучше понять, почему мы не разрешаем это, прочитайте это: http://ottopress.com/2010/dont-include-wp-load-please/

Прочел, чувствую, что там есть решение моей задачи, но как реализовать не понял. В примере речь идет о подключении css и js, ничего полезного там выяснить не смог, понял, что подключать require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php'); нельзя, т.к. это грузит всю систему wp и путь к файлу может быть другим у разных пользователей wp.

Помогите разобраться, пожалуйста. Как мне изменить скрипт, чтобы он не загружал постоянно ядро wordpress?

Если второй php файл подключить к основному файлу плагина, сразу выполняется cURL post запрос и вместо всего сайта отображается результат выполнения cURL.

Спасибо!

Answer 1

Вам достаточно для удачной работы wp_remote_post() и wp_remote_retrieve_body() подключить файл, где описаны даные хуки, а именно wp-includes/http.php (для версии WordPress 4.9.8). Тоесть:

require($_SERVER['DOCUMENT_ROOT'].'/wp-includes/http.php'); 
READ ALSO
Uncaught ReferenceError: function is not defined at HTMLInputElement.onclick?

Uncaught ReferenceError: function is not defined at HTMLInputElement.onclick?

Есть сайт на wordpressСделал отдельную страничку с калькулятором, где подключанию скрипты для получения величин, проверки и отправки данных

438
migs mastercard api помогите разобраться!

migs mastercard api помогите разобраться!

Ребята, спасайте! Мучаюсь третий день и не понимаю почему у меня выстреливает ошибка -

184
Как отправить ajax при единой точке входа

Как отправить ajax при единой точке входа

Возник такой вопрос, необходимо отправить ajax при загрузке view, но из за того что создана единая точка входа, не можем указать адресс

193