@9StarRu

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

Создал плагин 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 для получения дополнительной информации: codex.wordpress.org/Plugin_API

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

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


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

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

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

Спасибо!
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 1
swede2k
@swede2k
Full-stack developer
Использовать CURL?
$curl = curl_init();
 
$url = "https://site.ru/test.php";
 
$args = array(
	'id' => '1',
	'user_id' => '100'
);
 
curl_setopt_array($curl,
    array(
	CURLOPT_URL => $url,
	CURLOPT_POST       => true,
        CURLOPT_POSTFIELDS => $args,
        CURLOPT_RETURNTRANSFER     => true,
    )
);
$data = curl_exec($curl);
curl_close($curl);
echo $data;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы