WP_REMOTE_GET() ┃ WP 2.7.0: описание, использование, примеры

# WP_REMOTE_GET() │ WP 2.7.0

Функция wp_remote_get() позволяет получать ответ от HTTP-запроса с использованием метода GET. Она является оберткой для cURL и возвращает результат в виде массива, который включает в себя заголовки HTTP и содержание веб-страницы.

Для использования метода POST следует использовать функцию wp_remote_post().

Для безопасного использования GET-запросов можно воспользоваться wp_safe_remote_get().

## Возвращаемое значение

Функция возвращает массив или объект WP_Error в случае неудачи. Если сервер возвращает коды состояния, такие как 500 или 404, WP_Error не возвращается — данные ответа возвращаются как обычно.

## Шаблон использования

```php
$remote_get = wp_remote_get( $url, array(
    'timeout'     => 5,
    'redirection' => 5,
    'httpversion' => '1.0',
    'user-agent'  => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
    'blocking'    => true,
    'headers'     => array(),
    'cookies'     => array(),
    'body'        => null,
    'compress'    => false,
    'decompress'  => true,
    'sslverify'   => true,
    'stream'      => false,
    'filename'    => null
) );

Аргументы функции

wp_remote_get( $url, $args )

  • $url (string) (обязательный) — URL сайта, откуда нужно получить данные.
  • $args (array) — Массив с аргументами запроса, включая:

    • timeout — Время в секундах, после которого соединение прервется, если ��е удалось установить его. По умолчанию: 5 секунд.

    • redirection — Количество попыток следовать за перенаправлениями. По умолчанию: 5.

    • user-agent — Позволяет установить строку user-agent. По умолчанию: "WordPress/[версия]; [URL сайта]".

    • blocking — Позволяет выполнять неблокирующий запрос. По умолчанию: true.

    • compress — Позволяет отправлять тело запроса в сжатом виде.

    • decompress — Указывает, принимать ли сжатые данные в ответе. По умолчанию: true.

    • sslverify — Если true, проверяет, действителен ли SSL сертификат. По умолчанию: true.

    • method — HTTP метод для запроса (например, POST, GET). Лучше использовать специальную функцию wp_remote_request() для этого.

Примеры использования

Пример 1: Получение внешней страницы

$response = wp_remote_get( 'http://www.example.com/index.html' );

// Ответ будет содержать:
if ( !is_wp_error( $response ) ) {
    // Обработка успешного ответа
}

Пример 2: Установка параметров при получении удаленной страницы

$response = wp_remote_get(
    'http://www.example.com/index.php?action=foo',
    [
        'timeout' => 120,
        'httpversion' => '1.1'
    ]
);

// Проверяем, получили ли мы правильный ответ
if ( is_wp_error( $response ) ){
    echo $response->get_error_message();
} elseif( wp_remote_retrieve_response_code( $response ) === 200 ){
    // Все хорошо, обрабатываем данные
    $body = wp_remote_retrieve_body( $response );
}

Пример 3: Отправка неблокирующего запроса

$remote_url = 'https://site.com/wp-cron.php';

$args = [
    'timeout'   => 0.01,
    'blocking'  => false,
    'sslverify' => false,
];

$result = wp_remote_post( $remote_url, $args );

// Код продолжает выполняться

Примечания

  • Подробности о формате ответа можно найти в wp_remote_request().
  • Для информации о значениях аргументов используйте WP_Http::request().

Изменения

С версии 2.7.0 функция была внедрена.

Код функции

function wp_remote_get( $url, $args = array() ) {
    $http = _wp_http_get_object();
    return $http->get( $url, $args );
}

Leave a Reply

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