Функция wp_remote_retrieve_cookies()
в WordPress позволяет извлечь все куки, которые сервер установил в ответе на запрос. Это полезно, когда вам нужно работать с несколькими куками одновременно, и вы хотите получить их все в виде массива объектов WP_Http_Cookie
.
wp_remote_retrieve_cookies( array|WP_Error $response ): WP_Http_Cookie[]
Описание
Функция возвращает массив объектов WP_Http_Cookie
, каждый из которых содержит информацию о конкретной куки: её имя, значение, срок действия, путь и домен. Если куки в ответе отсутствуют, функция возвращает пустой массив. Также она возвращает пустой массив в случае ошибки (WP_Error
).
Параметры
- $response (array|WP_Error, обязательный): HTTP-ответ, который возвращается одной из функций для выполнения запросов, таких как
wp_remote_get()
илиwp_remote_post()
. Этот массив содержит заголовки, тело ответа, код статуса и куки.
Возвращаемое значение
- Массив объектов
WP_Http_Cookie
. Каждый объект содержит информацию о куке. - Пустой массив, если в ответе нет куков или если запрос завершился ошибкой.
Пример использования 1: Извлечение всех куков из HTTP-ответа
Рассмотрим сценарий, когда мы отправляем запрос к удаленному API, который возвращает куки в ответе. Мы можем использовать функцию wp_remote_retrieve_cookies()
для получения всех куков.
// Отправляем запрос к серверу, который устанавливает куки
$response = wp_remote_get( 'https://example.com/api/setcookies' );
// Проверяем наличие ошибок в ответе
if ( is_wp_error( $response ) ) {
echo 'Ошибка запроса: ' . $response->get_error_message();
return;
}
// Получаем массив всех куков из ответа
$cookies = wp_remote_retrieve_cookies( $response );
// Если куки найдены, выводим их информацию
if ( ! empty( $cookies ) ) {
foreach ( $cookies as $cookie ) {
echo 'Куки: ' . $cookie->name . ', Значение: ' . $cookie->value . ', Домен: ' . $cookie->domain . '<br>';
}
} else {
echo 'Куки не найдены в ответе.';
}
В этом примере мы отправляем запрос к API https://example.com/api/setcookies
, который возвращает несколько куков. Мы извлекаем все куки и выводим их информацию, включая имя, значение и домен.
Пример использования 2: Установка и получение нескольких куков
Для демонстрации работы с несколькими куками используем сервис httpbin.org
, который позволяет установить куки в ответе на запрос. Мы отправим запрос, который вернёт куки, и получим их все с помощью wp_remote_retrieve_cookies()
.
// Формируем URL для запроса с установкой куков
$url = 'https://httpbin.org/cookies/set?cookie1=value1&cookie2=value2';
// Выполняем запрос
$response = wp_remote_get( $url );
// Проверяем наличие ошибок
if ( is_wp_error( $response ) ) {
echo 'Ошибка запроса: ' . $response->get_error_message();
return;
}
// Извлекаем куки из ответа
$cookies = wp_remote_retrieve_cookies( $response );
// Выводим информацию о каждой куки
if ( ! empty( $cookies ) ) {
foreach ( $cookies as $cookie ) {
echo 'Имя куки: ' . $cookie->name . '<br>';
echo 'Значение куки: ' . $cookie->value . '<br>';
echo 'Домен: ' . $cookie->domain . '<br>';
echo 'Путь: ' . $cookie->path . '<br>';
echo 'Срок действия: ' . ( $cookie->expires ? date( 'Y-m-d H:i:s', $cookie->expires ) : 'Не указан' ) . '<br><br>';
}
} else {
echo 'Куки не найдены.';
}
Здесь мы делаем запрос к httpbin.org
, который возвращает две куки: cookie1
со значением value1
и cookie2
со значением value2
. Затем мы получаем и выводим полную информацию о каждой куки, включая путь и срок действия.
Пример использования 3: Обработка куков после авторизации
Предположим, вы отправляете запрос на страницу авторизации, где сервер устанавливает куки для сессии или токен авторизации. Вы можете использовать wp_remote_retrieve_cookies()
для получения всех этих куков.
// Отправляем запрос к странице авторизации
$response = wp_remote_post( 'https://example.com/login', array(
'body' => array(
'username' => 'user123',
'password' => 'securepassword',
),
));
// Проверяем наличие ошибок
if ( is_wp_error( $response ) ) {
echo 'Ошибка авторизации: ' . $response->get_error_message();
return;
}
// Получаем все куки из ответа
$cookies = wp_remote_retrieve_cookies( $response );
// Если сервер вернул куки, выводим информацию о них
if ( ! empty( $cookies ) ) {
echo 'Куки после авторизации:<br>';
foreach ( $cookies as $cookie ) {
echo 'Имя: ' . $cookie->name . ', Значение: ' . $cookie->value . '<br>';
}
} else {
echo 'Куки не установлены после авторизации.';
}
В этом примере мы отправляем POST-запрос для авторизации на сайте, а затем извлекаем все куки, которые были установлены сервером после успешной авторизации. Это может включать такие куки, как токен сессии или идентификатор пользователя.
Заключение
Функция wp_remote_retrieve_cookies()
— это мощный инструмент для работы с куками в ответах на HTTP-запросы в WordPress. Она позволяет легко извлечь все куки, установленные сервером, и работать с ними как с объектами WP_Http_Cookie
.
Основные моменты:
- Извлекает все куки из HTTP-ответа.
- Возвращает массив объектов
WP_Http_Cookie
, содержащих информацию о каждой куки. - Полезна при интеграции с внешними API и веб-сервисами, которые устанавливают куки.