WP_Remote_Get не работает
У меня есть плагин, который использует wp_remote_get()
, и он не работает на моем nginx сервере, поэтому я решил это протестировать.
Я создал файл test.php
и вставил:
<?php $response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>
Когда я запускаю этот файл, я получаю ошибку:
2017/02/04 16:22:31 [error] 16573#16573: *461100 FastCGI sent in stderr:
…
"PHP message: PHP Fatal error: Uncaught Error: Call to undefined function
wp_remote_get() in /var/www/html/wp-content/themes/x-child/test.php:1
Я не могу понять, почему эта функция определена как неопределенная, учитывая, что она является частью ядра WordPress?

Основная идея HTTP API заключается в обеспечении надежной доставки данных. Он использует 5 различных методов транспорта и выбирает оптимальный в зависимости от конфигурации вашего сервера. Поэтому проблемы совместимости с wp_remote_get()
маловероятны.
Кроме того, если WordPress не загружен, добавление действия не поможет - вы получите ту же ошибку о неопределенной функции, но теперь уже для add_action
.
По сути, вам не хватает загрузки WordPress. Для тестирования вы можете сделать так (предполагая, что ваш файл находится в корневой директории WordPress):
<?php
require_once( 'wp-load.php' );
$response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>

Пытаетесь ли вы получить доступ к файлу test.php напрямую? Если да, то WordPress не будет загружен, поэтому функция wp_remote_get()
не сработает.
Для использования wp_remote_get
необходимо убедиться, что WordPress загружен. Попробуйте подключиться к хуку wp_loaded
:
add_action( 'wp_loaded', function() {
$response = wp_remote_get( 'https://example.com/' );
print $response[ 'body' ];
} );
Есть вероятность, что ваш сервер настроен таким образом, что методы, используемые wp_remote_get
, недоступны для WordPress. В таком случае убедитесь, что на сервере установлен curl или wget.
