WP_REMOTE_POST() │ WP 2.7.0
Функция wp_remote_post()
используется для отправки HTTP-запросов на удалённые страницы с использованием метода POST. Она возвращает результат в виде массива, который включает HTTP-заголовки и содержимое веб-страницы. По сути, это обёртка для библиотеки cURL.
Как использовать куки
Вы можете использовать куки в запросах, передавая их в виде массива объектов WP_Http_Cookie
.
Для метода GET используйте функцию wp_remote_get()
.
Используемые функции
_wp_http_get_object()
WP_Http::post()
WP_Http::request()
Используется в
wp_check_browser_version()
Важно!
Функция не имеет хуков (hooks).
Возвращаемое значение
Функция возвращает либо массив с ответом, либо объект WP_Error
в случае ошибки.
Если сервер возвратил статусы, такие как 500 или 404, объект WP_Error
не будет создан — данные ответа будут возвращены как обычно.
Пример массива, который может быть возвращён:
Array (
[headers] => Array (
[date] => Thu, 30 Sep 2010 15:16:36 GMT
[server] => Apache
[x-powered-by] => PHP/5.3.3
[x-server] => 10.90.6.243
[expires] => Thu, 30 Sep 2010 03:16:36 GMT
[cache-control] => Array (
[0] => no-store, no-cache, must-revalidate
[1] => post-check=0, pre-check=0
)
[vary] => Accept-Encoding
[content-length] => 1641
[connection] => close
[content-type] => application/php
)
[body] => HTML-код веб-страницы!
[response] => Array (
=> 200
[message] => OK
)
[cookies] => Array()
)
Шаблон использования
wp_remote_post( $url, array(
'timeout' => 5,
'redirection' => 5,
'httpversion' => '1.0',
'blocking' => true,
'headers' => array(),
'body' => null, // параметры запроса в массиве
'cookies' => array()
) );
Аргументы использования
Функция wp_remote_post()
принимает два аргумента:
$url
(string, обязательный): URL сайта, который нужно запросить.$args
(array): параметры запроса.
Основные параметры ($args
)
-
body — массив параметров запроса, где ключ — это имя параметра, а значение — его значение, например:
array( 'foo'=>'val', 'bar'=>'val' )
. -
timeout — время в секундах, после которого соединение будет разорвано, а ошибка возвращена. Значение по умолчанию: 5 секунд.
-
redirection — количество раз, которое следует следовать за перенаправлением, прежде чем прекратить попытки. Значение по умолчанию: 5.
-
user-agent — позволяет задавать user-agent. Значение по умолчанию: "WordPress/4.0; http://example.com".
-
blocking — позволяет выполнять запросы в неблокирующем режиме. По умолчанию: true. Если установить false, PHP продолжит выполнение кода, не дожидаясь завершения запроса.
-
compress — позволяет отправлять тело запроса в сжатом виде. По умолчанию: true.
-
decompress — отвечает за заголовок accept-encoding в запросе. Если установить в true, сервер получит информацию о том, что сжатые данные принимаются. По умолчанию: true.
-
sslverify — если true, проверяет, действителен ли SSL-сертификат (не самоподписанный). По умолчанию: true.
Полный список аргументов
Для полного списка аргументов посмотрите функцию wp_remote_request()
.
Примеры
Пример 1: Отправка POST-данных на удалённый URL
$url = 'http://example.com/profile'; $args = array( 'timeout' => 45, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'headers' => array(), 'body' => array( 'username' => 'bob', 'password' => '1234xyz' ), 'cookies' => array() ); $response = wp_remote_post( $url, $args ); // Проверка на ошибку if ( is_wp_error( $response ) ) { $error_message = $response->get_error_message(); echo "Что-то пошло не так: $error_message"; } else { echo 'Ответ:
'; print_r( $response ); echo '';
}В переменной
$response['body']
хранится HTML-код страницы.Заметки
- Посмотрите
wp_remote_request()
для получения дополнительной информации о формате массива ответа. - Смотрите
WP_Http::request()
для информации о стандартных аргументах.
Изменения
- Функция была добавлена в версии 2.7.0.
Связанные функции
status_header()
wp_get_http_headers()
wp_http_validate_url()
wp_remote_get()
wp_remote_head()
wp_remote_request()
wp_remote_retrieve_body()
wp_remote_retrieve_cookie()
wp_remote_retrieve_cookie_value()
wp_remote_retrieve_cookies()
wp_remote_retrieve_header()
wp_remote_retrieve_headers()
wp_remote_retrieve_response_code()
wp_remote_retrieve_response_message()
wp_safe_remote_request()
Эта статья должна помочь вам разобраться с функцией wp_remote_post()
и её применением в WordPress.