# WP_REMOTE_GET() │ WP 2.7.0
Функция wp_remote_get() позволяет получать ответ от HTTP-запроса с использованием метода GET. Она является оберткой для cURL и возвращает результат в виде массива, который включает в себя заголовки HTTP и содержание веб-страницы.
Для использования метода POST следует использовать функцию wp_remote_post().
Для безопасного использования GET-запросов можно воспользоваться wp_safe_remote_get().
## Возвращаемое значение
Функция возвращает массив или объект WP_Error в случае неудачи. Если сервер возвращает коды состояния, такие как 500 или 404, WP_Error не возвращается — данные ответа возвращаются как обычно.
## Шаблон использования
```php
$remote_get = wp_remote_get( $url, array(
'timeout' => 5,
'redirection' => 5,
'httpversion' => '1.0',
'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
'blocking' => true,
'headers' => array(),
'cookies' => array(),
'body' => null,
'compress' => false,
'decompress' => true,
'sslverify' => true,
'stream' => false,
'filename' => null
) );
Аргументы функции
wp_remote_get( $url, $args )
- $url (string) (обязательный) — URL сайта, откуда нужно получить данные.
-
$args (array) — Массив с аргументами запроса, включая:
-
timeout — Время в секундах, после которого соединение прервется, если ��е удалось установить его. По умолчанию: 5 секунд.
-
redirection — Количество попыток следовать за перенаправлениями. По умолчанию: 5.
-
user-agent — Позволяет установить строку user-agent. По умолчанию: "WordPress/[версия]; [URL сайта]".
-
blocking — Позволяет выполнять неблокирующий запрос. По умолчанию: true.
-
compress — Позволяет отправлять тело запроса в сжатом виде.
-
decompress — Указывает, принимать ли сжатые данные в ответе. По умолчанию: true.
-
sslverify — Если true, проверяет, действителен ли SSL сертификат. По умолчанию: true.
-
method — HTTP метод для запроса (например, POST, GET). Лучше использовать специальную функцию
wp_remote_request()для этого.
-
Примеры использования
Пример 1: Получение внешней страницы
$response = wp_remote_get( 'http://www.example.com/index.html' );
// Ответ будет содержать:
if ( !is_wp_error( $response ) ) {
// Обработка успешного ответа
}
Пример 2: Установка параметров при получении удаленной страницы
$response = wp_remote_get(
'http://www.example.com/index.php?action=foo',
[
'timeout' => 120,
'httpversion' => '1.1'
]
);
// Проверяем, получили ли мы правильный ответ
if ( is_wp_error( $response ) ){
echo $response->get_error_message();
} elseif( wp_remote_retrieve_response_code( $response ) === 200 ){
// Все хорошо, обрабатываем данные
$body = wp_remote_retrieve_body( $response );
}
Пример 3: Отправка неблокирующего запроса
$remote_url = 'https://site.com/wp-cron.php';
$args = [
'timeout' => 0.01,
'blocking' => false,
'sslverify' => false,
];
$result = wp_remote_post( $remote_url, $args );
// Код продолжает выполняться
Примечания
- Подробности о формате ответа можно найти в
wp_remote_request(). - Для информации о значениях аргументов используйте
WP_Http::request().
Изменения
С версии 2.7.0 функция была внедрена.
Код функции
function wp_remote_get( $url, $args = array() ) {
$http = _wp_http_get_object();
return $http->get( $url, $args );
}