wp_safe_remote_request()

19 февраля, 2025
Безопасный HTTP-запрос в WordPress с помощью функции wp_safe_remote_request(): параметры, примеры, безопасность
Быстрая навигация по записи

Описание функции wp_safe_remote_request()

Функция wp_safe_remote_request() выполняет безопасный HTTP-запрос (GET, POST и др.) к удаленному серверу. Она используется для получения данных с внешних источников, обеспечивая защиту от возможных уязвимостей, таких как атаки типа CSRF или XSS. Функция проверяет URL на соответствие определенным критериям безопасности, прежде чем выполнять запрос

Параметры

$url

Тип: string

Обязательный: Да

Описание: URL-адрес, к которому будет выполнен запрос

Возможные значения:

$args

Тип: array

Обязательный: Нет

По умолчанию: array()

Описание: Массив дополнительных параметров для запроса

Возможные значения:

method: GET, POST, PUT, DELETE

body: Данные для отправки при POST/PUT запросах

timeout: Время ожидания в секундах

headers: Массив заголовков для запроса

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

Тип: array|WP_Error

Описание: Массив с результатами запроса или объект WP_Error в случае ошибки

Возможные значения:

• Массив с данными ответа и статусом

• Объект WP_Error в случае неудачи

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

Простой запрос к API с обработкой ошибок

				
					$response = wp_safe_remote_request('https://example.com/api/data');
if (is_wp_error($response)) {
    echo 'Ошибка: ' . $response->get_error_message();
} else {
    echo 'Ответ: ' . wp_remote_retrieve_body($response);
}
				
			

Выводит либо ошибку, либо тело ответа

Отправка POST-запроса с данными

				
					$args = array(
    'method' => 'POST',
    'body' => array('key' => 'value'),
    'timeout' => 15
);
$response = wp_safe_remote_request('https://example.com/api/data', $args);
				
			

Увеличивает время ожидания до 15 секунд

Логирование ошибок запроса

				
					$response = wp_safe_remote_request('https://example.com/api/data');
if (is_wp_error($response)) {
    error_log($response->get_error_message());
} else {
    // Обработка успешного ответа
}
				
			

Ошибки записываются в лог

Функция для получения данных в плагине

				
					function my_plugin_fetch_data() {
    $response = wp_safe_remote_request('https://example.com/api/data');
    if (is_wp_error($response)) {
        return 'Ошибка при получении данных';
    }
    return wp_remote_retrieve_body($response);
}
				
			

Возвращает данные или сообщение об ошибке

Безопасность

Валидация входных данных: URL проходит через sanitize_url() для валидации

Санитизация: Аргументы автоматически очищаются WordPress

Рекомендации: Не используйте пользовательские URL без проверки на безопасность

— Связанные функции

Выполняет GET-запрос без дополнительных проверок безопасности

Выполняет POST-запрос без дополнительных проверок безопасности

— Хуки

Фильтрует аргументы перед выполнением запроса

Фильтрует ответ после выполнения запроса

— Примечания

– Ограничения

Может не поддерживать некоторые типы запросов (например, WebSocket)

– Частые проблемы

  • Проблемы с CORS при запросах к сторонним API
  • Ошибка при недоступности удаленного сервера

Оставить комментарий

Нужна помощь с WordPress WooCommerce плагинами темой оптимизацией ?

Упрощаем сложное, создаем впечатляющее!
100% без риска
Нет обязательств по найму
Бесплатная оценка
4900 ₽
Для портфолио
Шаблон сайта портфолио на русском языке для веб студии. С современным дизайном, он упрощает создание блога и портфолио вашей команды.

Поможем вывести Ваш бизнес на новый уровень!

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил

Добро пожаловать!

Авторизуйтесь, чтобы продолжить

или

Забыли пароль? Восстановить

* Если аккунта у Вас еще нет, то он будет создан автоматически

Давайте составим техническое задание!
100% без риска
Нет обязательств по найму
Бесплатная оценка стоимости
Здравствуйте! Я асистент на основе искусственного интеллекта. Вы можете общаться со мной, как с человеком — задавайте вопросы, описывайте свои идеи и требования.

С удовольствием помогу вам составить техническое задание для вашего WordPress проекта. Если Вам нужна техническая поддержка по купленному у нас плагину или шаблону, то создайте тикет в личном кабинете.

Выберите подходящий вариант или опишите свою задачу в свободной форме, и я помогу вам составить четкий план действий, для оценки стоимости нашими разработчиками! 😊