wp_http_supports()WP 3.2.0

Определяет, есть ли в текущем окружении HTTP-транспорт, который может выполнить запрос с указанными возможностями.

Функция полезна перед выполнением HTTP-запросов, когда нужно заранее проверить, поддерживается ли нужная возможность, например SSL/TLS для HTTPS-запросов.

Внутри проверка передается в библиотеку Requests через Requests::has_capabilities().

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

Хуков нет.

Возвращает

true|false.

  • true — HTTP-транспорт поддерживает указанные возможности.
  • false — подходящего HTTP-транспорта для указанных возможностей нет.

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

wp_http_supports( $capabilities, $url );
$capabilities(array)

Массив возможностей для проверки или массив аргументов, похожий на $args из wp_remote_request().

Если передан числовой массив, например ['ssl'], он будет преобразован в ['ssl' => true].

Массив возможностей можно передать как список, например ['ssl']. Такой список будет преобразован в ассоциативный массив вида ['ssl' => true].

По умолчанию: []

$url(string|null)

URL запроса. Если указан HTTPS или SSL URL, функция добавит в проверку возможность ssl, если она еще не задана в $capabilities.

Если передать HTTPS URL во втором параметре, функция сама добавит проверку возможности ssl, если она еще не указана в массиве $capabilities.

По умолчанию: null

Примеры

0

#1 Проверка поддержки SSL

Проверяет, может ли HTTP API WordPress выполнять SSL/TLS-запросы.

if ( wp_http_supports( [ 'ssl' ] ) ) {
	echo 'SSL-запросы поддерживаются.';
} else {
	echo 'SSL-запросы не поддерживаются.';
}
0

#2 Проверка поддержки HTTPS URL перед запросом

Если во втором параметре передан HTTPS URL, возможность ssl будет добавлена автоматически.

$url = 'https://api.wordpress.org/core/version-check/1.7/';

if ( wp_http_supports( [], $url ) ) {
	$response = wp_remote_get( $url );
}
0

#3 Передача возможностей ассоциативным массивом

Такой вариант удобно использовать, когда нужно явно указать, какие возможности должны быть включены.

$capabilities = [
	'ssl' => true,
];

if ( wp_http_supports( $capabilities ) ) {
	echo 'Подходящий HTTP-транспорт найден.';
}

Список изменений

С версии 3.2.0 Введена.

Код wp_http_supports() WP 7.0

function wp_http_supports( $capabilities = array(), $url = null ) {
	$capabilities = wp_parse_args( $capabilities );

	$count = count( $capabilities );

	// If we have a numeric $capabilities array, spoof a wp_remote_request() associative $args array.
	if ( $count && count( array_filter( array_keys( $capabilities ), 'is_numeric' ) ) === $count ) {
		$capabilities = array_combine( array_values( $capabilities ), array_fill( 0, $count, true ) );
	}

	if ( $url && ! isset( $capabilities['ssl'] ) ) {
		$scheme = parse_url( $url, PHP_URL_SCHEME );
		if ( 'https' === $scheme || 'ssl' === $scheme ) {
			$capabilities['ssl'] = true;
		}
	}

	return WpOrg\Requests\Requests::has_capabilities( $capabilities );
}