Выполняет HTTP-запрос к серверу и возвращает ответ от сервера.
Функция является частью WordPress HTTP API, про него у меня есть отдельный урок.
В WordPress существуют и другие функции для отправки HTTP-запросов, предназначенные для определённых HTTP-методов, хотя в самих функциях отличий никаких нет.
wp_remote_request( $url, $args = array() )
GET
, POST
, HEAD
, PUT
, DELETE
, TRACE
, OPTIONS
или PATCH
.GET
.45
спасило ситуацию.5
.5
.WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' )
wp_http_validate_url()
. По умолчанию принимает значение false
, то есть проверка не осуществляется.true
– по умолчанию) или неблокирующий (false
) запрос? Неблокирующие запросы полезны, когда вам нужно отправить какой-то запрос на сторонний сервер и сразу же продолжить выполнение PHP-кода, не дожидаясь ответа. Обратите внимание, что неблокирующие запросы могут не поддерживаться на некоторых хостингах.null
.false
(не нужно).true
– да.true
– да.ABSPATH . WPINC . '/certificates/ca-bundle.crt'
.false
.stream
указан в значение true
.null
.Если вдруг запрос к серверу не удалось выполнить, функция возвращает объект ошибки WP_Error.
Если всё ок, то массив со следующей структурой:
$response = array( 'headers' => массив, // заголовки ответа 'response' => array( 'code' => целое, // код ответа 'message' => строка // сообщение, сформированное на основе кода ), 'body' => строка, // тело ответа 'cookies' => массив, 'filename' => строка );
Давайте попробуем запарсить главную страницу моего сайта:
$request = wp_remote_request( 'https://misha.agency' ); print_r( $request ); /* Array ( [headers] => Requests_Utility_CaseInsensitiveDictionary Object ( [data:protected] => Array ( [server] => nginx-reuseport/1.21.1 [date] => Sat, 12 Feb 2022 05:28:14 GMT [content-type] => text/html; charset=UTF-8 [content-length] => 6407 [x-powered-by] => PHP/7.3.31 [vary] => Accept-Encoding,Cookie [cache-control] => max-age=3, must-revalidate [content-encoding] => gzip [last-modified] => Sat, 12 Feb 2022 05:13:57 GMT ) ) [body] => <!DOCTYPE html><html ....тут весь HTML страницы сайта... </html> [response] => Array ( [code] => 200 [message] => OK ) [cookies] => Array ( ) [filename] => )
Если вы почитали описания других функций по работе с HTTP-запросами или даже посмотрели мой видеоурок по ним, то вы наверное уже мастерски владеете GET и POST-запросами. Но где и когда используются другие методы запроса, например PATCH или DELETE?
В качестве примера рассмотрим MailChimp API.
$api_key = 'Тут ключ доступа к API MailChimp'; $list_id = 'ID листа, откуда отписать пользователя'; $email = 'Email пользователя'; $url = 'https://' . substr( $api_key, strpos( $api_key, '-' ) +1 ) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . md5( strtolower( $email ) ); // https://us10.api.mailchimp.com/3.0/lists/{list_id}/members/{subscriber_hash} wp_remote_request( $url, array( 'method' => 'DELETE', 'headers' => array( 'Authorization' => 'Basic ' . base64_encode( 'user:'. $api_key ) // базовая авторизация ) ) );
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.