Как использовать WooCommerce REST API для управления заказами в WordPress

Что такое WooCommerce REST API и зачем он нужен

WooCommerce REST API — это мощный инструмент, позволяющий разработчикам и администраторам сайтов на WordPress получать и изменять данные интернет-магазина программно. Особенно полезен он для автоматизации обработки заказов, интеграции с внешними сервисами и создания кастомных панелей управления. На wp-host.ru мы часто сталкиваемся с задачей интеграции WooCommerce с CRM-системами и ERP, а также с необходимостью создавать собственные скрипты для массового управления заказами.

REST API предоставляет доступ к ключевым сущностям WooCommerce: заказам, продуктам, клиентам, платежам и т.д. Это значит, что можно не заходить в админку, а делать всё через HTTP-запросы, что ускоряет работу и упрощает интеграцию.

Для работы с API необходимы ключи доступа (Consumer Key и Consumer Secret), которые создаются в настройках WooCommerce. Они обеспечивают безопасность и позволяют ограничивать права доступа.

Создание ключей доступа API в WooCommerce

Для начала работы с WooCommerce REST API нужно сгенерировать пару ключей:

  1. В панели администратора WordPress перейдите в WooCommerce → Настройки → Дополнительно → REST API.
  2. Нажмите «Добавить ключ».
  3. Введите описание, выберите пользователя и права доступа (чтение, запись или чтение и запись).
  4. Сохраните ключи, которые появятся на экране — они больше не будут отображаться.

Эти ключи используются для аутентификации при отправке запросов к API.

Пример запроса для получения списка заказов

Покажем, как с помощью PHP и библиотеки cURL получить последние 10 заказов.

function wp_host_get_orders() {
    $url = 'https://your-site.ru/wp-json/wc/v3/orders?per_page=10';
    $consumer_key = 'ck_xxxxxxx';
    $consumer_secret = 'cs_xxxxxxx';

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_USERPWD, $consumer_key . ':' . $consumer_secret);

    $response = curl_exec($curl);
    $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);

    if ($httpcode === 200) {
        return json_decode($response, true);
    } else {
        return null;
    }
}

Эта функция возвращает массив с информацией о заказах, который затем можно обработать и вывести в удобном формате.

Обновление статуса заказа через API

Часто возникает необходимость автоматически менять статус заказов, например, после подтверждения оплаты во внешней системе. Рассмотрим пример, как изменить статус заказа на «completed».

function wp_host_update_order_status($order_id, $new_status = 'completed') {
    $url = 'https://your-site.ru/wp-json/wc/v3/orders/' . $order_id;
    $consumer_key = 'ck_xxxxxxx';
    $consumer_secret = 'cs_xxxxxxx';

    $data = json_encode(['status' => $new_status]);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_USERPWD, $consumer_key . ':' . $consumer_secret);
    curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

    $response = curl_exec($curl);
    $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);

    return $httpcode === 200 ? json_decode($response, true) : null;
}

Этот код отправляет PUT-запрос с новым статусом. При успешном обновлении вернётся обновлённый объект заказа.

Фильтрация заказов по дате и статусу через API

API позволяет удобно фильтровать заказы, например, получать только новые или заказы за определённый период. В запросе можно использовать параметры status, after и before.

Пример запроса для получения новых заказов за последние 7 дней:

$url = 'https://your-site.ru/wp-json/wc/v3/orders?status=processing&after=' . date('Y-m-d', strtotime('-7 days'));

Такой подход позволяет создавать отчёты и триггеры на стороне сервера, что полезно для автоматизации.

Использование плагина WP-Host API Helper для упрощения работы с WooCommerce API

На wp-host.ru мы разработали плагин WP-Host API Helper, который облегчает работу с WooCommerce REST API. Он оборачивает стандартные запросы в удобные функции с логированием и обработкой ошибок.

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

use WpHostApiHelper\WooCommerceApi;

$api = new WooCommerceApi('ck_xxxxxxx', 'cs_xxxxxxx', 'https://your-site.ru');

$orders = $api->getOrders(['per_page' => 5, 'status' => 'pending']);

foreach ($orders as $order) {
    echo 'Заказ #' . $order['id'] . ' на сумму ' . $order['total'] . ' руб.<br>';
}

Плагин автоматизирует авторизацию, построение URL и обработку ответов, экономя время.

Безопасность и ограничения при работе с WooCommerce REST API

Важно помнить, что ключи доступа дают существенные права, поэтому их нельзя раскрывать публично. Используйте HTTPS, чтобы данные не перехватывались. Также можно ограничивать права ключей только чтением или записью в зависимости от задачи.

WooCommerce имеет ограничения по количеству запросов (rate limits), чтобы защитить сервер от перегрузки. При интенсивной работе стоит реализовывать кэширование результатов и обрабатывать ошибки с повтором.

Также некоторые хостинг-провайдеры (например, wp-host.ru) могут иметь дополнительные рекомендации по конфигурации сервера и безопасности при использовании REST API — обязательно ознакомьтесь с ними.

Заключение: практические советы по работе с WooCommerce REST API

Использование WooCommerce REST API открывает большие возможности для автоматизации и интеграции. Начинайте с простых GET-запросов, постепенно добавляя обновление и создание данных. Не забывайте обрабатывать ошибки и логировать важные операции.

Интеграция с CRM, автоматическое обновление статусов заказов, генерация отчетов — всё это становится проще с REST API. На wp-host.ru мы рекомендуем использовать готовые библиотеки и наши инструменты для ускорения разработки и повышения надежности.

Если вы хотите получить пример плагина или скрипта с конкретным кейсом — обращайтесь, мы поможем реализовать задачи любой сложности.

Запрет на создание новых регистраций в WordPress по IP: настройка и примеры кода
27.01.2026
Как автоматизировать удаление спама в комментариях WordPress
27.11.2025
Как использовать PHP-FPM с поддержкой multiple pools в WordPress для повышения производительности
12.03.2026
Как разделить базу данных WordPress на несколько серверов для повышения производительности
24.12.2025
WooCommerce: как избежать проблем с размерами изображений в корзине
05.05.2026