Функция wp_remote_head()
в WordPress используется для отправки HTTP HEAD запроса к удаленному серверу. HEAD запросы полезны для получения только заголовков ответа без тела контента, что позволяет быстро проверять статус ресурса и другую информацию, не загружая сам контент.
wp_remote_head( $url, $args = array() )
- $url (string) (обязательный): URL, к которому осуществляется запрос.
- $args (array) (необязательный): Дополнительные параметры запроса.
Параметры
- method (string): Метод запроса. В случае с
wp_remote_head()
значение всегда будет ‘HEAD’. - timeout (int): Лимит времени в секундах на получение данных. По умолчанию – 5.
- redirection (int): Максимальное количество редиректов. По умолчанию – 5.
- httpversion (string): Версия используемого протокола. Поддерживаемые значения – 1.0 (по умолчанию) и 1.1.
- user-agent (string): Строка user-agent. По умолчанию:
WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' )
. - blocking (bool): Будет ли запрос блокирующим (true) или неблокирующим (false). По умолчанию – true.
- headers (array): Заголовки запроса.
- cookies (array): Куки, отправляемые с запросом.
- body (string|array): Тело запроса. Для HEAD запросов не используется.
- compress (bool): Сжимать ли тело запроса (body). По умолчанию – false.
- decompress (bool): Распаковывать ли полученные данные. По умолчанию – true.
- sslverify (bool): Проверять ли SSL-сертификат. По умолчанию – true.
- sslcertificates (string): Абсолютный путь к файлу SSL-сертификата. По умолчанию:
ABSPATH . WPINC . '/certificates/ca-bundle.crt'
. - stream (bool): Записывать ли ответ в файл. По умолчанию – false.
- filename (string): Имя файла для записи ответа, если параметр
stream
установлен в true. - limit_response_size (int): Ограничение размера ответа в байтах. По умолчанию – null.
Возвращаемое значение
Функция возвращает массив HTTP заголовков или объект WP_Error
в случае неудачного запроса.
Пример: Получение заголовков с удаленного сервера
В этом примере мы отправляем HEAD запрос к указанному URL и выводим полученные HTTP заголовки.
$url = 'https://example.com';
$args = array(
'timeout' => 10, // Устанавливаем лимит времени на выполнение запроса в 10 секунд.
'redirection' => 5, // Максимальное количество редиректов - 5.
'httpversion' => '1.1', // Используем версию HTTP 1.1.
'blocking' => true, // Запрос будет блокирующим.
'headers' => array( // Добавляем заголовки запроса.
'Custom-Header' => 'CustomValue'
),
'cookies' => array() // Куки, оставляем пустыми.
);
$response = wp_remote_head( $url, $args );
// Проверка на наличие ошибок
if ( is_wp_error( $response ) ) {
$error_message = $response->get_error_message();
echo "Что-то пошло не так: $error_message";
} else {
$headers = wp_remote_retrieve_headers( $response );
echo 'HTTP Заголовки: <pre>';
print_r( $headers );
echo '</pre>';
}
В этом примере отправляется HEAD запрос к https://example.com
. Если запрос успешен, выводятся полученные HTTP заголовки. В противном случае выводится сообщение об ошибке.
Пример возвращаемого значения
Array
(
[date] => Fri, 12 Jul 2024 12:00:00 GMT
[server] => Apache
[content-type] => text/html; charset=UTF-8
[connection] => close
[content-length] => 12345
[status] => 200 OK
)
Этот пример показывает типичные заголовки, возвращаемые сервером, включая дату, сервер, тип контента, длину контента и статус ответа.
Заключение
Функция wp_remote_head()
является полезным инструментом для быстрого получения заголовков ответа от удаленного сервера. Это позволяет проверить доступность ресурса, получить основные метаданные и использовать эту информацию в различных сценариях, не загружая сам контент.