WP_Remote_Get не работает

4 февр. 2017 г., 18:28:27
Просмотры: 20K
Голосов: 1

У меня есть плагин, который использует 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?

1
Комментарии

Вы запускаете это через "cron" в WordPress?

kaiser kaiser
5 февр. 2017 г. 03:48:24
Все ответы на вопрос 2
0

Основная идея 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']; ?>
4 февр. 2017 г. 21:30:38
0

Пытаетесь ли вы получить доступ к файлу 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.

4 февр. 2017 г. 19:08:38