wp_http_supports()
Определяет, есть ли в текущем окружении HTTP-транспорт, который может выполнить запрос с указанными возможностями.
Функция полезна перед выполнением HTTP-запросов, когда нужно заранее проверить, поддерживается ли нужная возможность, например SSL/TLS для HTTPS-запросов.
Внутри проверка передается в библиотеку Requests через 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
Примеры
#1 Проверка поддержки SSL
Проверяет, может ли HTTP API WordPress выполнять SSL/TLS-запросы.
if ( wp_http_supports( [ 'ssl' ] ) ) {
echo 'SSL-запросы поддерживаются.';
} else {
echo 'SSL-запросы не поддерживаются.';
} #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 );
} #3 Передача возможностей ассоциативным массивом
Такой вариант удобно использовать, когда нужно явно указать, какие возможности должны быть включены.
$capabilities = [
'ssl' => true,
];
if ( wp_http_supports( $capabilities ) ) {
echo 'Подходящий HTTP-транспорт найден.';
}
Список изменений
| С версии 3.2.0 | Введена. |
Код wp_http_supports() 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 );
}