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 Глубокая интеграция, нет необходимости в ключах Требует написание плагинов/тем, сложно для внешних систем
Плагины автоматизации Готовые решения для интеграции и управления заказами Простота использования, готовые интерфейсы Могут быть платными, менее гибкие
Как отключить системные email уведомления WordPress без плагинов
28.12.2025
Как удалить неиспользуемые таблицы базы данных WordPress
08.12.2025
Как создать автоматическое резервное копирование WordPress с помощью плагинов и собственного кода
28.11.2025
Как использовать хуки для изменения функциональности WordPress без переписывания кода
16.03.2026
Как добавить произвольные типы постов в WordPress с примерами кода
20.12.2025