Функция wp_remote_retrieve_headers()
используется для получения всех заголовков из HTTP-ответа в WordPress. Она возвращает массив или объект заголовков, которые можно использовать для обработки данных, таких как дата ответа, тип контента, политика кэширования и многое другое. Это полезно при взаимодействии с API или внешними ресурсами, где необходимо анализировать метаданные ответа сервера.
wp_remote_retrieve_headers( array|WP_Error $response ): WpOrgRequestsUtilityCaseInsensitiveDictionary|array
Описание
Эта функция позволяет получить все заголовки из HTTP-ответа, переданного через параметр $response
. Возвращает объект типа WpOrg\Requests\Utility\CaseInsensitiveDictionary
, который содержит заголовки в виде ключей и значений. Все заголовки доступны независимо от регистра символов, что упрощает их использование.
Параметры
- $response (array|WP_Error, обязательный): HTTP-ответ, полученный одной из функций, таких как
wp_remote_get()
,wp_remote_post()
илиwp_remote_request()
. В случае ошибки возвращается объектWP_Error
.
Возвращаемое значение
- WpOrg\Requests\Utility\CaseInsensitiveDictionary|Массив: Все заголовки ответа. Пустой массив возвращается в случае ошибки или если передан неверный параметр.
Пример использования 1: Получение всех заголовков ответа
Этот пример демонстрирует, как получить и вывести все заголовки, полученные в ответ на запрос.
// Отправляем запрос на получение данных
$response = wp_remote_get( 'https://httpbin.org/get?a=123' );
// Извлекаем все заголовки ответа
$headers = wp_remote_retrieve_headers( $response );
// Преобразуем заголовки в массив и выводим на экран
$headers_array = (array) $headers;
print_r( $headers_array );
/*
Вывод будет что-то вроде:
Array
(
[date] => Wed, 18 Oct 2023 12:34:56 GMT
[content-type] => application/json
[content-length] => 352
[server] => nginx/1.18.0
[access-control-allow-origin] => *
[access-control-allow-credentials] => true
)
*/
В этом примере мы отправляем GET-запрос к API сервиса httpbin.org
, затем получаем все заголовки ответа и выводим их в виде массива.
Пример использования 2: Получение значения определённого заголовка
Если нужно извлечь только один заголовок, можно просто использовать его ключ.
// Отправляем запрос
$response = wp_remote_get( 'https://httpbin.org/get?query=test' );
// Извлекаем заголовки
$headers = wp_remote_retrieve_headers( $response );
// Получаем значение заголовка 'content-length'
$content_length = $headers['content-length'];
echo 'Длина содержимого: ' . $content_length; // Например, 352
Здесь мы делаем запрос и получаем значение заголовка content-length
, которое сообщает размер содержимого в байтах.
Пример использования 3: Работа с повторяющимися заголовками
Некоторые заголовки, такие как cache-control
, могут содержать несколько значений. В этом случае wp_remote_retrieve_headers()
вернёт все значения заголовка в виде массива.
// Отправляем запрос к ресурсу
$response = wp_remote_get( 'https://example.com/api/data' );
// Извлекаем все заголовки
$headers = wp_remote_retrieve_headers( $response );
// Получаем значения заголовка 'cache-control'
$cache_control = $headers['cache-control'];
// Выводим все значения 'cache-control'
if ( is_array( $cache_control ) ) {
foreach ( $cache_control as $value ) {
echo 'Cache-Control: ' . $value . '<br>';
}
} else {
echo 'Cache-Control: ' . $cache_control;
}
В этом примере мы выводим все значения заголовка cache-control
, если их несколько, например, политики no-cache
и must-revalidate
.
Пример использования 4: Проверка наличия заголовков
Иногда нужно убедиться, что определённый заголовок присутствует в ответе. Для этого можно использовать функцию проверки isset()
.
// Отправляем запрос к ресурсу
$response = wp_remote_get( 'https://api.example.com/resource' );
// Извлекаем все заголовки
$headers = wp_remote_retrieve_headers( $response );
// Проверяем наличие заголовка 'content-type'
if ( isset( $headers['content-type'] ) ) {
echo 'Тип контента: ' . $headers['content-type'];
} else {
echo 'Заголовок "Content-Type" не найден.';
}
Здесь мы проверяем, присутствует ли заголовок content-type
, и выводим его значение, если он существует.
Пример использования 5: Извлечение и анализ кэш-заголовков
При работе с API или ресурсами, которые подлежат кэшированию, можно проанализировать заголовки, связанные с кэшированием, например, cache-control
и expires
.
// Отправляем запрос к API
$response = wp_remote_get( 'https://api.example.com/resource' );
// Извлекаем все заголовки
$headers = wp_remote_retrieve_headers( $response );
// Проверяем наличие заголовков, связанных с кэшированием
$cache_control = isset( $headers['cache-control'] ) ? $headers['cache-control'] : 'Не установлено';
$expires = isset( $headers['expires'] ) ? $headers['expires'] : 'Не установлено';
// Выводим данные о кэшировании
echo 'Cache-Control: ' . $cache_control . '<br>';
echo 'Expires: ' . $expires;
В этом примере мы анализируем заголовки cache-control
и expires
, которые помогают определить, как долго сервер рекомендует кэшировать ответ.
Заключение
Функция wp_remote_retrieve_headers()
— это мощный инструмент для работы с HTTP-заголовками в WordPress. Она позволяет получить все заголовки ответа в удобной для обработки форме и извлекать конкретные значения, что полезно при взаимодействии с внешними API или для анализа данных от сервера.