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

Диагностика проблемы: почему автоматизация управления заказами важна

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

Пошаговое решение: как получить и обновить заказы через REST API

1. Получение ключей доступа API WooCommerce

Перейдите в админке WordPress в WooCommerce > Настройки > Продвинутые > REST API. Создайте ключ с правами read/write. Сохраните Consumer key и Consumer secret.

2. Подключение к REST API с помощью PHP

Установите библиотеку automattic/woocommerce через Composer или используйте простой пример с wp_remote_get и wp_remote_post.

<?php
$consumer_key = 'ck_xxx';
$consumer_secret = 'cs_xxx';
$store_url = 'https://example.com';

// Формируем URL с аутентификацией
$url = $store_url . '/wp-json/wc/v3/orders?consumer_key=' . $consumer_key . '&consumer_secret=' . $consumer_secret;

$response = wp_remote_get($url);
if (is_wp_error($response)) {
    echo 'Ошибка подключения: ' . $response->get_error_message();
    return;
}

$orders = json_decode(wp_remote_retrieve_body($response), true);
print_r($orders);
?>

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

Для изменения статуса используйте метод PUT с ID заказа и новым статусом в теле запроса:

<?php
$order_id = 123;
$url = $store_url . '/wp-json/wc/v3/orders/' . $order_id . '?consumer_key=' . $consumer_key . '&consumer_secret=' . $consumer_secret;

$args = [
    'method'  => 'PUT',
    'headers' => ['Content-Type' => 'application/json'],
    'body'    => json_encode(['status' => 'completed']),
];

$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
    echo 'Ошибка обновления: ' . $response->get_error_message();
    return;
}

$result = json_decode(wp_remote_retrieve_body($response), true);
echo 'Статус заказа изменён на: ' . $result['status'];
?>

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

Чтобы проверить, успешно ли обновился заказ, зайдите в WooCommerce > Заказы и убедитесь, что выбранный заказ имеет новый статус. Также можно повторно выполнить GET-запрос на этот заказ через API и проверить поле status.

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

  • Ошибка 401 Unauthorized — проверьте правильность ключей API и URL магазина, а также включена ли поддержка REST API в WooCommerce.
  • Ошибка 403 Forbidden — убедитесь, что у ключей есть права read/write, а не только read.
  • Некорректный формат JSON — проверяйте, что тело запроса содержит валидный JSON и заголовки Content-Type установлены верно.
  • Проблемы с SSL — при локальной разработке отключите проверку сертификата, но на продакшене обязательно используйте валидный SSL.

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

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

Таблица сравнения вариантов управления заказами через REST API

МетодПреимуществаНедостаткиКогда использовать
Плагины автоматизации (например, WP All Import)Простой интерфейс, не требует кодаОграниченная гибкость, нагрузка на сайтДля непрофессионалов и простых задач
Кастомные скрипты на PHP с REST APIГибкость, тонкий контроль, интеграция с внешними системамиТребуется знание кода, поддержкаДля сложных и уникальных бизнес-процессов
Использование WP-CLI с кастомными командамиБыстрая обработка, подходит для больших сайтовТолько для серверного доступаАдминистраторы с доступом к консоли
Как создать свой шорткод в WordPress
03.11.2025
Как создать собственный плагин для автоматического отчёта в WordPress
01.03.2026
Автоматизация создания и публикации новостей в WordPress
13.03.2026
Как удалить или изменить атрибуты товаров WooCommerce через код
01.05.2026
Как создать динамические таблицы в WordPress с помощью шорткодов
05.01.2026