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

Что такое WC REST API и зачем он нужен для управления заказами

WooCommerce REST API — это программный интерфейс, который позволяет внешним приложениям взаимодействовать с вашим магазином на WordPress. Через API можно создавать, изменять, удалять и получать заказы, товары, клиентов и пр. Автоматизация управления заказами с помощью WC REST API позволяет интегрировать магазин с ERP-системами, CRM, автоматизировать обработку заказов и обновление статусов без ручного вмешательства.

Диагностика: как понять, что REST API настроен неправильно для заказов

Если вы пытаетесь работать с заказами через API и получаете ошибки, например 401 Unauthorized или 403 Forbidden, либо данные не обновляются, значит, либо ключи доступа не настроены, либо права доступа недостаточны.

  • Проверьте, включен ли REST API и правильно ли сгенерированы ключи в WooCommerce → Настройки → Расширенные → REST API.
  • Убедитесь, что пользователь, для которого созданы ключи, имеет роль с правами редактирования заказов (обычно администратор или менеджер магазина).
  • Проверьте URL запросов — должен использоваться правильный endpoint /wp-json/wc/v3/orders.

Пошаговое решение: базовые операции с заказами через WC REST API

1. Создание API ключей

Перейдите в админке WordPress в WooCommerce → Настройки → Расширенные → REST API. Нажмите "Добавить ключ", выберите пользователя с нужными правами, задайте описание, установите права "Чтение/Запись" и сохраните. Сохраните сгенерированные Consumer key и Consumer secret.

2. Пример запроса получения заказов на PHP с использованием WP_Http

$url = 'https://example.com/wp-json/wc/v3/orders';
$consumer_key = 'ck_xxxxxxxxxxxxxxxxxxx';
$consumer_secret = 'cs_xxxxxxxxxxxxxxxxxxx';

$args = [
    'headers' => [
        'Authorization' => 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret),
    ],
];

$request = new WP_Http();
$response = $request->get($url, $args);

if (!is_wp_error($response)) {
    $orders = json_decode($response['body'], true);
    print_r($orders);
} else {
    echo 'Ошибка запроса API: ' . $response->get_error_message();
}

3. Создание нового заказа через API

Для создания заказа отправьте POST-запрос с данными в JSON формате. Минимальный набор данных:

{
  "payment_method": "bacs",
  "payment_method_title": "Direct Bank Transfer",
  "set_paid": true,
  "billing": {
    "first_name": "Иван",
    "last_name": "Иванов",
    "email": "ivan@example.com",
    "phone": "1234567890",
    "address_1": "ул. Ленина, д.1",
    "city": "Москва",
    "postcode": "101000",
    "country": "RU"
  },
  "line_items": [
    {
      "product_id": 123,
      "quantity": 2
    }
  ]
}

4. Пример создания заказа на PHP

$url = 'https://example.com/wp-json/wc/v3/orders';
$data = [
    'payment_method' => 'bacs',
    'payment_method_title' => 'Direct Bank Transfer',
    'set_paid' => true,
    'billing' => [
        'first_name' => 'Иван',
        'last_name' => 'Иванов',
        'email' => 'ivan@example.com',
        'phone' => '1234567890',
        'address_1' => 'ул. Ленина, д.1',
        'city' => 'Москва',
        'postcode' => '101000',
        'country' => 'RU',
    ],
    'line_items' => [
        [
            'product_id' => 123,
            'quantity' => 2,
        ],
    ],
];

$args = [
    'headers' => [
        'Content-Type' => 'application/json',
        'Authorization' => 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret),
    ],
    'body' => json_encode($data),
];

$request = new WP_Http();
$response = $request->post($url, $args);

if (!is_wp_error($response)) {
    $order = json_decode($response['body'], true);
    echo 'Создан заказ с ID: ' . $order['id'];
} else {
    echo 'Ошибка создания заказа: ' . $response->get_error_message();
}

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

  • В админке WooCommerce перейдите в раздел "Заказы" и убедитесь, что созданные через API заказы появились.
  • Используйте Postman или curl для тестирования запросов к API и проверяйте ответы с кодами 200 и корректными данными.
  • Для отладки можно включить логирование REST API в WooCommerce: добавьте в wp-config.php define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); и проверяйте файл wp-content/debug.log.

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

  • Ошибка 401 Unauthorized: неверные ключи API или пользователь не имеет достаточных прав. Проверьте правильность Consumer key/secret и роль пользователя.
  • Ошибка 403 Forbidden: доступ к API заблокирован сервером (например, модулем безопасности). Проверьте настройки .htaccess и firewall.
  • Проблемы с CORS: если API вызывается с фронтенда, настройте заголовки в сервере или используйте серверный прокси.
  • Неправильный формат данных: при создании заказа убедитесь, что JSON валидный, обязательные поля заполнены (например, billing, line_items).

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

  • Используйте HTTPS для всех запросов к API, чтобы защитить ключи и данные.
  • Ограничьте права API-ключей только необходимыми (чтение или запись по необходимости).
  • Ротация ключей: периодически меняйте ключи для безопасности.
  • Кэшируйте часто запрашиваемые данные заказов на стороне приложения, чтобы снизить нагрузку на сервер.
  • Для массовой обработки заказов используйте пакетные запросы с пагинацией, чтобы не перегружать сервер.

Сравнение вариантов взаимодействия с заказами WooCommerce

МетодОписаниеПреимуществаНедостатки
WC REST API Официальный API WooCommerce для работы с заказами Стандартизован, поддерживается, подходит для интеграций Нужна настройка ключей, возможны ограничения хостинга
PHP-функции WooCommerce Работа с заказами через PHP-код внутри WordPress Глубокая интеграция, нет необходимости в ключах Требует написание плагинов/тем, сложно для внешних систем
Плагины автоматизации Готовые решения для интеграции и управления заказами Простота использования, готовые интерфейсы Могут быть платными, менее гибкие
Как добавить поле в форму регистрации WordPress
04.12.2025
Как удалить неиспользуемые метаданные в WordPress
06.04.2026
Как создать выбор по дате в админке WordPress с примерами кода
21.02.2026
Как избежать конфликтов между плагинами в WordPress: практические решения
11.12.2025
Как удалить и очистить комментарии в WordPress
18.02.2026