wp_remote_retrieve_body()
Функция wp_remote_retrieve_body() — это полезный инструмент в WordPress, который позволяет извлекать содержимое (тело) ответа, полученного с помощью различных функций API, таких как wp_remote_get().
Как работает функция
Эта функция принимает только один параметр — ответ от одной из функций wp_remote_*(), например, wp_remote_get().
Если вам нужно только получить код ответа (например, 200), используйте функцию wp_remote_retrieve_response_code().
Возвращаемое значение
Функция возвращает строку.
- Строка: содержимое ответа (тело).
- Пустая строка: если ответ пустой или передан объект ошибки
WP_Error.
Пример использования
wp_remote_retrieve_body( $response );
Параметр
$response(array|WP_Error): обязательный параметр. Ответ, полученный с помощью одной из функций WP HTTP API (например,wp_remote_get()). Функция также может принимать объект ошибкиWP_Error.
Примеры
1. Получение тела ответа
Давайте получим данные от пользователя GitHub:
$response = wp_remote_get( 'https://api.github.com/users/doiftrue' );
$body = wp_remote_retrieve_body( $response );
// Декодируем данные
$api_response = json_decode( $body, true );
print_r( $api_response);
/* выводит:
Array
(
[login] => doiftrue
[id] => 15121552
[node_id] => MDQ6VXNlcjE1MTIxNTUy
[avatar_url] => https://avatars.githubusercontent.com/u/15121552?v=4
[url] => https://api.github.com/users/doiftrue
[html_url] => https://github.com/doiftrue
[followers_url] => https://api.github.com/users/doiftrue/followers
[following_url] => https://api.github.com/users/doiftrue/following{/other_user}
...
)
*/
2. Получение удалённой страницы с кэшированием
Теперь создадим функцию, которая будет получать HTML-код удалённой страницы и кэшировать его:
function get_remote_html( $url, $trans_name = 'foo_remote_html' ) {
// Проверяем, есть ли уже кэш. Если его нет, получаем HTML
$html = get_transient( $trans_name );
if( false === $html ){
// Получаем HTML
$response = wp_remote_get( $url );
// ��роверяем на ошибки
if ( is_wp_error( $response ) ) {
return;
}
// Получаем тело
$html = wp_remote_retrieve_body( $response );
// Сохраняем полученный ответ в кэше на 24 часа
set_transient( $trans_name, $html, 24 * HOUR_IN_SECONDS );
}
return $html;
}
// Вызываем функцию
$html = get_remote_html( 'http://example.com/some-remote-file.html', 'my_trans_name' );
Изменения в версии
- С версии 2.7.0: функция была внедрена.
Содержимое функции
Вот как выглядит код функции wp_remote_retrieve_body():
function wp_remote_retrieve_body( $response ) {
if ( is_wp_error( $response ) || ! isset( $response['body'] ) ) {
return '';
}
return $response['body'];
}
Связанные функции
status_header()wp_get_http_headers()wp_http_validate_url()wp_remote_get()wp_remote_head()wp_remote_post()wp_remote_request()wp_remote_retrieve_cookie()wp_remote_retrieve_cookie_value()wp_remote_retrieve_cookies()wp_remote_retrieve_header()wp_remote_retrieve_headers()wp_remote_retrieve_response_code()wp_remote_retrieve_response_message()wp_safe_remote_request()
Эти функции помогут вам работать с HTTP-запросами и ответами в WordPress более эффективно.