Как использовать функцию wp_remote_retrieve_body()

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 более эффективно.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *