WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

wp_remote_get() WP 2.7.0

Получает удаленную страницу используя HTTP GET метод. Обертка для использования curl. Результат содержит HTTP заголовки и данные самой станицы, и возвращается в виде массива.

Для HTTP POST метода, используйте аналогичную функцию: wp_remote_post().

Читайте подробную статью про HTTP API.

Работает на основе: _wp_http_get_object()

Хуков нет.

Возвращает

WP_Error/массив: результат ответа; WP_Error в случае ошибки.

Использование

wp_remote_get( $url, $args );

Шаблон использования

$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
) );
$url(cтрока) (обязательный)
УРЛ страницы, которую нужно получить.
$args(массив)

Аргументы запроса, в виде массива. Могут быть:

  • method - HTTP метод, например: POST, GET, HEAD, PUT.

  • timeout - время в секундах на получение данных. Время можно изменить в плагине через фильтр "http_request_timeout".

  • redirection - число, сколько раз переходить по редиректам, если они есть.
    Значение можно изменить в плагине через фильтр "http_request_redirection_count".

  • user-agent - позволяет установить user-agent. По умолчанию "WordPress/4.0; http://www.example.com", где 4.0 - текущая версия WP, а http://www.example.com - адрес сайта. Значение можно изменить через фильтр "http_headers_useragent".

  • blocking - позволяет выполнять не блокирующие запросы. По умолчанию true. Если установить в false, то это позволит PHP продолжать работу, пока запрос обрабатывается. Полезно это, когда вам нужно просто отправить запрос и не важно был ли он обработан и что он вернул. (имейте ввиду, что не все серверы поддерживают эту функцию и даже установив этот параметр в false, блокировка все равно будет. Альтернатива: установить timeout в 1 секунду, но делать это не рекомендуется, т.к. запрос может быть не послан вообще).

  • compress - позволяет отправлять тело запроса (body) в сжатом виде.

  • decompress - по умолчанию true. Отвечает за параметр accept-encoding. Если установить в false, то серверу в заголовках будет сказано, что принимаются сжатые данные и при получении сжатые данные тела (body) будут распакованы.

  • sslverify - логический. true - будет проверять SSL сертификат (подпись, актуальность к сайту) и прервет запрос, если проверка не будет пройдена. Если вы запрашиваете https и знаете что проверка может быть не пройдена, но сайту можно доверять, то уберите проверку сертификата - поставьте в этом параметре false.

По умолчанию: array()

Примеры

#1 Получим внешнюю страницу

$result = wp_remote_get( 'http://www.example.com/index.html' );

/* $result будет содержать:
Array
(
	[headers] => Array
		(
			[accept-ranges] => bytes
			[cache-control] => max-age=604800
			[content-type] => text/html
			[date] => Fri, 24 Oct 2014 13:07:13 GMT
			[etag] => "359670651"
			[expires] => Fri, 31 Oct 2014 13:07:13 GMT
			[last-modified] => Fri, 09 Aug 2013 23:54:35 GMT
			[server] => ECS (ewr/144C)
			[x-cache] => HIT
			[x-ec-custom-error] => 1
			[content-length] => 1270
			[connection] => close
		)

	[body] => <!doctype html> ...
	[response] => Array
		(
			[code] => 200
			[message] => OK
		)

	[cookies] => Array
		(
		)

	[filename] => 
)
*/

#2 Установим параметры при получении удаленной страницы

$request = wp_remote_get( 'http://www.example.com/index.php?action=foo', array( 'timeout' => 120, 'httpversion' => '1.1' ) );

// проверим правильный ли получили ответ
if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ){
	// Все OK, делаем что нибудь с данными $request['body']
}

Код wp remote get: wp-includes/http.php WP 4.8.1

<?php
function wp_remote_get($url, $args = array()) {
	$http = _wp_http_get_object();
	return $http->get( $url, $args );
}

Cвязанные функции

Из метки: HTTP API (curl remote)

wp_remote_get 2 комментария
  • campusboy1730 cайт: wp-plus.ru

    Обращаюсь по API к Яндекс.Метрике, получаю нужные мне ответ, но дебагер постоянно ругается, не пойму, что ему надо?

    Ответ от Метрики идёт в json формате.

    Ответитьгод назад #
    • campusboy1730 cайт: wp-plus.ru

      Решил вопрос, переопределив аргумент decompress в false.

      Ответитьгод назад #

Здравствуйте, !

Ваш комментарий