wp_remote_get()
Выполняет HTTP-запрос к серверу (методом GET) и возвращает полученный ответ.
Функция является частью WordPress HTTP API, про него у меня есть отдельный урок.
wp_remote_get( $url, $args = array() )
Параметры
- $url
- (строка) URL, к которому осуществляется запрос.
- $args
- (массив) Дополнительные параметры запроса.
- timeout
- (целое число) Лимит времени в секундах, в течение которого данные должны быть получены. Если сторонний сервер отвечает слишком долго, то лучше установить значение побольше, иначе запрос будет прерываться. Например я сталкивался с такой ситуацией, и установка параметра в значение
45
спасило ситуацию.
По умолчанию – 5
.
- redirection
- (целое число) Лимит по редиректам. В некоторых ситуациях при обращении по определённому урл, сервер может произвести редирект на другой урл. Этим параметром мы можем задать максимальное количество таких редиректов, при превышении которого запрос будет прерываться.
По умолчанию – 5
.
- httpversion
- (строка) Версия используемого протокола. Поддерживаемые значения 1.0 (по умолчанию) и 1.1
- user-agent
- (строка) По умолчанию:
WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' )
- reject_unsafe_urls
- (логическое) Нужно ли осуществлять проверку безопасности URL функцией
wp_http_validate_url()
. По умолчанию принимает значение false
, то есть проверка не осуществляется.
- blocking
- (логическое) Это будет блокирующий (
true
– по умолчанию) или неблокирующий (false
) запрос? Неблокирующие запросы полезны, когда вам нужно отправить какой-то запрос на сторонний сервер и сразу же продолжить выполнение PHP-кода, не дожидаясь ответа. Обратите внимание, что неблокирующие запросы могут не поддерживаться на некоторых хостингах.
- headers
- (строка|массив) Заголовки запроса. С их помощью мы можем например выполнить базовую авторизацию.
- cookies
- (массив) Куки, посылаемые в запросе.
- body
- (строка|массив) Тело запроса. Например может использоваться при осуществлении запроса платежа платёжным шлюзом и содержать список товаров в заказе и адрес доставки клиента.
По умолчанию – null
.
- compress
- (логическое) Нужно ли сжимать тело запроса (body) при отправке.
По умолчанию – false
(не нужно).
- decompress
- (логическое) Нужно ли попытаться распаковать полученные данные?
По умолчанию true
– да.
- sslverify
- (логическое) Нужно ли проверять корректность SSL для запроса.
По умолчанию true
– да.
- sslcertificates
- (строка) Абсолютный путь к файлу SSL-сертификата .crt.
По умолчанию: ABSPATH . WPINC . '/certificates/ca-bundle.crt'
.
- stream
- (логическое) Нужно ли записать полученный ответ в файл.
По умолчанию: false
.
- filename
- (строка) Файл, в который нужно записать ответ, если параметр
stream
указан в значение true
.
- limit_response_size
- (целое число) Количество байтов, которыми нужно ограничить размер ответа.
По умолчанию – null
.
- method
- (строка) Вот так сюрприз – функция поддерживает и другие методы запроса. Принимает значения
GET
, POST
, HEAD
, PUT
, DELETE
, TRACE
, OPTIONS
или PATCH
.
По умолчанию – GET
.
Пример использования
Несмотря на то, что функция позволяет выполнить запрос любого вида (как мы узнали из параметров), я всё же рекомендую использовать её по назначению – для GET-запросов.
В качестве примера давайте попробуем получить актуальный курс валют от центробанка.
// тут достаточно первого параметра функции, больше ничего можно не указывать
$response = wp_remote_get( 'https://www.cbr-xml-daily.ru/daily_json.js' );
// проверяем, что запрос был успешно отправлен и ответ получен
if( 200 === wp_remote_retrieve_response_code( $response ) ) {
// преобразуем полученный JSON в объект
$response = json_decode( wp_remote_retrieve_body( $response ) );
// выводим курсы валют
echo 'Курс Доллара: ' . $response->Valute->USD->Value;
echo 'Курс Евро: ' . $response->Valute->EUR->Value;
}
Этот пример также рассмотрен пошагово и описан супер-подробно здесь.
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.