Функция wp_remote_retrieve_response_code()
используется для получения кода ответа (статуса HTTP) из результата запроса в WordPress. HTTP-код ответа указывает на результат запроса: успешен ли он, возникла ли ошибка или необходимо предпринять дополнительные действия. Это особенно важно при работе с внешними API или серверными ресурсами, где необходимо обрабатывать различные типы ответов (например, 200, 404, 500 и т.д.).
wp_remote_retrieve_response_code( array|WP_Error $response ): int|string
Описание
wp_remote_retrieve_response_code()
возвращает код состояния HTTP-ответа из объекта $response
, который передаётся в функцию. Код состояния представляет собой целое число, например, 200 для успешного запроса, 404 для «Не найдено», или 500 для «Внутренняя ошибка сервера«. Если передан неверный параметр, функция вернёт пустую строку.
Параметры
- $response (array|WP_Error, обязательный): HTTP-ответ, полученный с помощью одной из функций WordPress, таких как
wp_remote_get()
,wp_remote_post()
илиwp_remote_request()
. Если в результате запроса произошла ошибка, это будет объектWP_Error
.
Возвращаемое значение
- int|строка: Код состояния HTTP-ответа в виде целого числа (например, 200, 404 и т.д.) или пустая строка, если передан неверный параметр.
Пример использования 1: Получение кода состояния ответа
Этот пример демонстрирует, как получить и вывести код состояния ответа на простой HTTP-запрос.
// Отправляем запрос на удалённый сервер
$response = wp_remote_get( 'https://httpbin.org/status/200' );
// Получаем код состояния ответа
$response_code = wp_remote_retrieve_response_code( $response );
echo 'Код ответа: ' . $response_code; // Вывод: Код ответа: 200
В этом примере мы отправляем GET-запрос на сервис httpbin.org
, который возвращает ответ с кодом 200, указывая на успешное выполнение запроса.
Пример использования 2: Обработка различных кодов ответа
Часто необходимо не просто получать код состояния, но и принимать решения в зависимости от кода ответа. В следующем примере показано, как можно обрабатывать различные коды.
// Отправляем запрос
$response = wp_remote_get( 'https://httpbin.org/status/404' );
// Получаем код состояния ответа
$response_code = wp_remote_retrieve_response_code( $response );
// Проверяем код ответа и выполняем действия в зависимости от результата
if ( $response_code == 200 ) {
echo 'Запрос успешно выполнен!';
} elseif ( $response_code == 404 ) {
echo 'Ошибка: Ресурс не найден (404)';
} elseif ( $response_code == 500 ) {
echo 'Внутренняя ошибка сервера (500)';
} else {
echo 'Неизвестный код ответа: ' . $response_code;
}
Здесь мы отправляем запрос и в зависимости от полученного кода ответа выводим соответствующее сообщение.
Пример использования 3: Обработка ошибок с WP_Error
В случае ошибки при отправке запроса, wp_remote_get()
может вернуть объект WP_Error
, и функция wp_remote_retrieve_response_code()
вернёт пустую строку. Важно правильно обрабатывать такие ситуации.
// Отправляем запрос на несуществующий ресурс
$response = wp_remote_get( 'https://nonexistentdomain.com' );
// Проверяем, является ли ответ объектом WP_Error
if ( is_wp_error( $response ) ) {
echo 'Ошибка запроса: ' . $response->get_error_message();
} else {
// Получаем код ответа
$response_code = wp_remote_retrieve_response_code( $response );
echo 'Код ответа: ' . $response_code;
}
Этот пример демонстрирует, как обрабатывать ошибку при запросе, например, если домен не существует или произошла другая ошибка, не связанная с кодом состояния HTTP.
Пример использования 4: Работа с API и кэшированием
Код состояния ответа полезен при работе с API, где можно реализовать стратегию кэширования данных в зависимости от кода ответа. Например, успешные запросы можно кэшировать на определённое время, а ошибки — обрабатывать немедленно.
// Отправляем запрос к API
$response = wp_remote_get( 'https://api.example.com/data' );
// Получаем код состояния ответа
$response_code = wp_remote_retrieve_response_code( $response );
if ( $response_code == 200 ) {
// Если запрос успешен, кэшируем данные
$body = wp_remote_retrieve_body( $response );
set_transient( 'api_data', $body, 3600 ); // Кэшируем данные на 1 час
echo 'Данные успешно получены и закэшированы.';
} else {
// Если ошибка, обрабатываем её
echo 'Ошибка получения данных: Код ответа ' . $response_code;
}
Здесь мы кэшируем данные API, если запрос был успешен (код 200), а в случае ошибки просто выводим сообщение с кодом ошибки.
Пример использования 5: Логирование ошибок при запросах
При разработке сайтов, особенно с интеграцией с внешними API, важно вести журнал ошибок для диагностики. Следующий пример показывает, как можно записывать ошибки запросов в лог.
// Отправляем запрос
$response = wp_remote_get( 'https://httpbin.org/status/500' );
// Получаем код состояния ответа
$response_code = wp_remote_retrieve_response_code( $response );
// Логируем ошибки, если запрос завершился с кодом 4xx или 5xx
if ( $response_code >= 400 ) {
error_log( 'Ошибка запроса: Код ответа ' . $response_code );
} else {
echo 'Запрос выполнен успешно, код ответа: ' . $response_code;
}
В этом примере, если сервер возвращает код ошибки (например, 500 — внутренняя ошибка сервера), сообщение об этом записывается в лог.
Заключение
Функция wp_remote_retrieve_response_code()
— это простой и эффективный инструмент для получения HTTP-кода ответа в WordPress. Она позволяет быстро и легко проверять статус запроса и принимать соответствующие меры в зависимости от кода ответа.