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

Диагностика задачи: зачем массовое управление заказами через API

При большом количестве заказов в WooCommerce ручное изменение статусов, обновление данных или массовая обработка становится слишком трудоёмкой. В таких случаях правильное использование REST API позволяет автоматизировать процессы, интегрировать внешние системы и экономить время.

Подключение и аутентификация к WooCommerce REST API

Для работы с API необходимо сгенерировать ключи доступа в WooCommerce: Consumer Key и Consumer Secret. Они создаются в админке WooCommerce в разделе WooCommerce → Settings → Advanced → REST API.

Для отправки запросов можно использовать PHP с библиотекой Guzzle или cURL. Пример базовой настройки с использованием cURL:

$consumer_key = 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$consumer_secret = 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$store_url = 'https://example.com';

$endpoint = '/wp-json/wc/v3/orders';
$url = $store_url . $endpoint . '?consumer_key=' . $consumer_key . '&consumer_secret=' . $consumer_secret;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);

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

Предположим, нужно изменить статус нескольких заказов (например, с processing на completed). Для этого делаем PATCH-запросы к каждому заказу, либо отправляем несколько запросов параллельно.

Пример обновления одного заказа с использованием PHP и cURL:

function update_order_status($order_id, $new_status, $consumer_key, $consumer_secret, $store_url) {
    $endpoint = "/wp-json/wc/v3/orders/" . $order_id;
    $url = $store_url . $endpoint . "?consumer_key=" . $consumer_key . "&consumer_secret=" . $consumer_secret;

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

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

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

// Пример вызова
$order_ids = [123, 124, 125];
foreach ($order_ids as $order_id) {
    $result = update_order_status($order_id, 'completed', $consumer_key, $consumer_secret, $store_url);
    if (isset($result['status']) && $result['status'] === 'completed') {
        echo "Order {$order_id} updated successfully.\n";
    } else {
        echo "Failed to update order {$order_id}.\n";
    }
}

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

  • Проверьте, что заказы с указанными ID действительно изменили статус через админку WooCommerce.
  • Для отладки используйте логирование ответа API и HTTP-кодов.
  • Можно также использовать Query Monitor или аналогичные инструменты для проверки запросов.

Частые ошибки и как их исправлять

  • 401 Unauthorized — неверные ключи Consumer Key/Secret или отсутствуют права доступа. Проверьте права пользователя, создавшего ключи.
  • 404 Not Found — неправильный URL или неверный ID заказа. Убедитесь, что домен и путь к API указаны корректно.
  • 405 Method Not Allowed — неверный HTTP-метод (нужно PUT для обновления).
  • Отсутствие SSL (https) может блокировать запросы по соображениям безопасности.
  • При массовых запросах можно получить ограничение по времени выполнения или лимиты API — используйте паузы или пакетную обработку.

Практические советы по безопасности и производительности

  • Используйте HTTPS для всех запросов к API.
  • Не храните ключи доступа в открытом виде в коде — используйте переменные окружения или защищённые хранилища.
  • Для массовых операций делайте пакетные запросы с контролем скорости, чтобы не перегружать сервер.
  • Логи API-запросов помогут быстро выявить проблемы и аномалии.

Сравнение вариантов массового обновления заказов

МетодПреимуществаНедостаткиПример
REST API с cURL/PHPГибкость, интеграция с любыми системамиСложнее настроить, требуется кодПример в статье
Плагины массового редактированияУдобство для админов, без кодаМогут быть платными, ограничены функционаломBulk Edit for WooCommerce
WP-CLIБыстрая командная строка, скриптыТребуется доступ к серверу и навыки CLIwp wc order update
Как создать собственную настройку в админ-панели WordPress
18.01.2026
Как избавиться от повторяющихся постов в WordPress без плагинов
14.05.2026
Как использовать хуки в WordPress: практические примеры и советы
10.11.2025
Как удалить пустые категории в WordPress с помощью кода
06.01.2026
Как автоматизировать поддержку многоязычности в WordPress с помощью Polylang и WPTO
18.03.2026