Функция wp_remote_retrieve_header()
используется для получения значения конкретного заголовка из HTTP-ответа, который возвращается в результате выполнения запроса. Эта функция полезна, когда нужно узнать определённую информацию из ответа сервера, например, дату последнего изменения ресурса, тип контента или другие поля заголовка.
wp_remote_retrieve_header( array|WP_Error $response, string $header ): array|string
Описание
Функция извлекает значение указанного заголовка из ответа, переданного через параметр $response
. Если заголовок существует, функция вернёт его значение в виде строки или массива (если заголовок повторяется). Если заголовок не найден, возвращается пустая строка.
Параметры
- $response (array|WP_Error, обязательный): HTTP-ответ, который возвращается одной из функций, таких как
wp_remote_get()
,wp_remote_post()
, илиwp_remote_request()
. Массив содержит заголовки, тело ответа, статус и другие данные. - $header (string, обязательный): Имя заголовка, значение которого нужно извлечь.
Возвращаемое значение
- Строка или массив. Значение поля заголовка. Массив возвращается, если заголовок повторяется несколько раз.
- Пустая строка, если заголовок не существует или если был передан некорректный параметр.
Пример использования 1: Получение даты последнего изменения ресурса
Представим, что мы хотим узнать, когда в последний раз изменялся удалённый файл (например, CSS-стили). Для этого можно использовать заголовок last-modified
.
// Отправляем запрос на получение файла стилей
$response = wp_remote_get( 'https://example.com/styles/style.css' );
// Извлекаем заголовок 'last-modified' для получения даты последнего изменения
$last_modified = wp_remote_retrieve_header( $response, 'last-modified' );
// Выводим дату последнего изменения
if ( ! empty( $last_modified ) ) {
echo 'Последнее изменение файла: ' . $last_modified;
} else {
echo 'Заголовок "Last-Modified" не найден.';
}
В этом примере мы отправляем запрос на получение файла стилей с удалённого сайта. Заголовок last-modified
содержит дату последнего изменения файла, и мы выводим её, если заголовок найден.
Пример использования 2: Проверка типа контента
Иногда вам может потребоваться узнать, какой тип данных сервер возвращает в ответ на запрос. Это можно сделать, извлекая заголовок content-type
.
// Выполняем запрос к ресурсу
$response = wp_remote_get( 'https://api.example.com/data' );
// Получаем значение заголовка 'content-type'
$content_type = wp_remote_retrieve_header( $response, 'content-type' );
// Проверяем тип контента и выводим сообщение
if ( ! empty( $content_type ) ) {
echo 'Тип контента: ' . $content_type;
} else {
echo 'Заголовок "Content-Type" не найден.';
}
Здесь мы отправляем запрос к API и проверяем, какой тип контента возвращает сервер (например, application/json
, text/html
и т.д.).
Пример использования 3: Получение нескольких значений заголовка
Некоторые заголовки могут повторяться в ответе, как например, заголовок set-cookie
, когда сервер отправляет несколько куков. В этом случае функция вернёт массив со всеми значениями заголовка.
// Отправляем запрос, который возвращает несколько куков
$response = wp_remote_get( 'https://httpbin.org/cookies/set?cookie1=value1&cookie2=value2' );
// Извлекаем заголовок 'set-cookie'
$cookies = wp_remote_retrieve_header( $response, 'set-cookie' );
// Если найдено несколько значений заголовка 'set-cookie', выводим их
if ( ! empty( $cookies ) && is_array( $cookies ) ) {
foreach ( $cookies as $cookie ) {
echo 'Кука: ' . $cookie . '<br>';
}
} else {
echo 'Заголовок "Set-Cookie" не найден или содержит одно значение: ' . $cookies;
}
В этом примере мы отправляем запрос, который возвращает несколько куков, и выводим их значения, используя заголовок set-cookie
.
Пример использования 4: Извлечение заголовков ответа для кэширования
Если вы создаёте запросы к удалённым ресурсам, можно использовать заголовок cache-control
для получения информации о политике кэширования, установленной сервером.
// Выполняем запрос к API
$response = wp_remote_get( 'https://example.com/api/data' );
// Извлекаем заголовок 'cache-control'
$cache_control = wp_remote_retrieve_header( $response, 'cache-control' );
// Проверяем и выводим информацию о кэшировании
if ( ! empty( $cache_control ) ) {
echo 'Политика кэширования: ' . $cache_control;
} else {
echo 'Заголовок "Cache-Control" не найден.';
}
В этом примере мы проверяем заголовок cache-control
, чтобы понять, как сервер управляет кэшированием данных.
Пример использования 5: Работа с заголовками авторизации
При взаимодействии с API, защищёнными паролями или токенами, можно использовать заголовки авторизации, такие как authorization
.
// Отправляем запрос с заголовком авторизации
$response = wp_remote_get( 'https://secure.example.com/api', array(
'headers' => array(
'Authorization' => 'Bearer your-token-here',
),
));
// Извлекаем заголовок 'authorization' из ответа
$auth_header = wp_remote_retrieve_header( $response, 'authorization' );
// Выводим заголовок авторизации (если он был возвращён в ответе)
if ( ! empty( $auth_header ) ) {
echo 'Заголовок авторизации: ' . $auth_header;
} else {
echo 'Заголовок "Authorization" не найден.';
}
Этот пример демонстрирует, как использовать заголовок authorization
для передачи токена авторизации и как получить этот заголовок из ответа сервера.
Заключение
Функция wp_remote_retrieve_header()
— это удобный инструмент для работы с заголовками HTTP-ответов в WordPress. Она позволяет легко извлекать отдельные заголовки и работать с ними, будь то заголовки, касающиеся даты последнего изменения файла, типа контента, куков или кэширования.