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

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

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

WooCommerce REST API предоставляет программный интерфейс для взаимодействия с данными интернет-магазина — продуктами, заказами, клиентами и т.д. Основное преимущество API — возможность управлять магазином из внешних приложений или создавать собственные админ-инструменты без необходимости заходить в админ-панель WordPress.

С помощью REST API можно:

  • Автоматически создавать и обновлять заказы;
  • Получать список заказов с фильтрацией по статусу, дате, клиенту;
  • Обрабатывать оплату и менять статусы заказов программно;
  • Интегрировать магазин с CRM, ERP, системами аналитики;
  • Создавать кастомные отчеты и уведомления.

Для доступа к API необходимо получить ключи (consumer key и consumer secret) в настройках WooCommerce, а также убедиться, что используются правильные права доступа.

Основные методы работы с заказами через WooCommerce REST API

API использует стандартные HTTP-методы: GET для получения данных, POST для создания, PUT/PATCH для обновления и DELETE для удаления. Рассмотрим основные запросы с примерами.

Получение списка заказов

Чтобы получить заказы, отправьте GET-запрос на /wp-json/wc/v3/orders с параметрами фильтрации. Пример с использованием PHP и библиотеки Guzzle:

function wphelper_get_orders() {
    $client = new \GuzzleHttp\Client();
    $response = $client->request('GET', 'https://your-site.ru/wp-json/wc/v3/orders', [
        'auth' => ['consumer_key', 'consumer_secret'],
        'query' => [
            'status' => 'processing',
            'per_page' => 10
        ]
    ]);
    $orders = json_decode($response->getBody(), true);
    return $orders;
}

Функция возвращает массив заказов со статусом processing, ограниченный 10 элементами.

Создание нового заказа

Для создания заказа нужно отправить POST-запрос с данными клиента, товарами и оплатой. Пример:

function wphelper_create_order() {
    $client = new \GuzzleHttp\Client();
    $data = [
        'payment_method' => 'bacs',
        'payment_method_title' => 'Direct Bank Transfer',
        'set_paid' => true,
        'billing' => [
            'first_name' => 'Иван',
            'last_name' => 'Иванов',
            'email' => 'ivan@example.com',
            'phone' => '1234567890'
        ],
        'line_items' => [
            [
                'product_id' => 123,
                'quantity' => 2
            ]
        ]
    ];

    $response = $client->request('POST', 'https://your-site.ru/wp-json/wc/v3/orders', [
        'auth' => ['consumer_key', 'consumer_secret'],
        'json' => $data
    ]);

    return json_decode($response->getBody(), true);
}

Обратите внимание, что product_id нужно заменить на существующий ID товара из вашего магазина.

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

Для смены статуса заказа используйте PUT-запрос. Например, чтобы пометить заказ как выполненный:

function wphelper_update_order_status($order_id) {
    $client = new \GuzzleHttp\Client();
    $data = [
        'status' => 'completed'
    ];

    $response = $client->request('PUT', "https://your-site.ru/wp-json/wc/v3/orders/{$order_id}", [
        'auth' => ['consumer_key', 'consumer_secret'],
        'json' => $data
    ]);

    return json_decode($response->getBody(), true);
}

Удаление заказа

Удаление производится через DELETE-запрос. Пример:

function wphelper_delete_order($order_id) {
    $client = new \GuzzleHttp\Client();
    $response = $client->request('DELETE', "https://your-site.ru/wp-json/wc/v3/orders/{$order_id}", [
        'auth' => ['consumer_key', 'consumer_secret'],
        'query' => ['force' => true]
    ]);
    return json_decode($response->getBody(), true);
}

Обработка ошибок и безопасность при работе с WooCommerce REST API

При работе с API важно проверять ответы сервера и корректно обрабатывать ошибки, чтобы избежать сбоев в работе интеграций. Например, в PHP можно ловить исключения Guzzle:

try {
    // Запрос к API
} catch (\GuzzleHttp\Exception\RequestException $e) {
    error_log('Ошибка API: ' . $e->getMessage());
}

Для безопасности:

  • Используйте HTTPS для всех запросов;
  • Ограничьте права доступа ключей API только необходимыми операциями;
  • Регулярно меняйте ключи;
  • Используйте IP-фильтрацию, если возможно.

Полезные плагины для расширения возможностей WooCommerce REST API

Иногда стандартных возможностей REST API недостаточно. Вот несколько плагинов, которые помогут расширить функционал:

  • Clearfy Pro — оптимизация и расширение API;
  • WPCommunity — интеграция с социальными функциями;
  • WPRemark — расширенные отзывы и рейтинги с API.

Как протестировать и отладить запросы к WooCommerce REST API

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

  • Postman — визуальный клиент для тестирования REST API запросов;
  • cURL — командная строка для отправки HTTP-запросов;
  • Плагины WordPress для логирования REST API запросов.

Например, запрос на получение заказов через cURL:

curl https://your-site.ru/wp-json/wc/v3/orders \
    -u consumer_key:consumer_secret \
    -G --data-urlencode "status=processing" --data-urlencode "per_page=5"

При тестах обращайте внимание на статус ответа, тело и заголовки для правильной настройки взаимодействия.

Заключение

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

Как использовать WooCommerce REST API для управления заказами
29.01.2026
Как создать производительный виджет в WordPress с помощью REST API
13.12.2025
Как удалить неиспользуемые посты в WordPress автоматически
08.03.2026
Как использовать transientы в WordPress для кэширования данных
25.02.2026
Автоматическое изменение стоимости товара в WooCommerce по условиям
22.04.2026