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

Диагностика задачи: зачем нужен WooCommerce REST API для заказов

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

Если вы столкнулись с задачей автоматизации работы с заказами, но не знаете, как корректно использовать API, эта статья подробно разберет практические сценарии и покажет, как обойти распространённые ошибки.

Как получить доступ к WooCommerce REST API

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

Для работы с заказами через REST API необходимо создать ключи доступа с нужными правами:

В админке WordPress перейдите в <strong>WooCommerce > Настройки > Дополнительно > REST API</strong>.
Нажмите «Добавить ключ». Задайте описание, выберите пользователя и права доступа «Чтение/Запись».
Сохраните и сохраните сгенерированные Consumer Key и Consumer Secret.

Эти ключи будут использоваться при запросах для аутентификации через Basic Auth или OAuth 1.0.

Проверка подключения

Самый простой способ проверить доступ — сделать GET-запрос к API заказов:

curl -X GET https://example.com/wp-json/wc/v3/orders \
  -u consumer_key:consumer_secret

Если получите JSON с заказами — подключение работает.

Работа с заказами через API: основные методы

Получение списка заказов с фильтрацией

API позволяет не просто получить все заказы, но и фильтровать их по статусу, дате, клиенту и т.д. Пример запроса на получение всех заказов со статусом "processing":

GET https://example.com/wp-json/wc/v3/orders?status=processing

Пример PHP-кода с использованием Guzzle для получения заказов:

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://example.com']);
$response = $client->request('GET', '/wp-json/wc/v3/orders', [
    'auth' => ['consumer_key', 'consumer_secret'],
    'query' => ['status' => 'processing']
]);
$orders = json_decode($response->getBody(), true);
print_r($orders);

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

Чтобы изменить статус заказа, используйте PUT-запрос с указанием нового статуса:

PUT https://example.com/wp-json/wc/v3/orders/12345
{
  "status": "completed"
}

Пример кода для обновления заказа 12345 на PHP:

$response = $client->request('PUT', '/wp-json/wc/v3/orders/12345', [
    'auth' => ['consumer_key', 'consumer_secret'],
    'json' => ['status' => 'completed']
]);
$order = json_decode($response->getBody(), true);
echo "Статус обновлен: " . $order['status'];

Пошаговое решение: автоматизация обновления статусов заказов

Шаг 1. Настройка API ключей

Создайте ключи с правами чтения/записи, как описано выше.

Шаг 2. Создание PHP-скрипта для запуска по cron

Напишите скрипт, который получает заказы со статусом "processing" и переводит их в "completed" после проверки условий (например, оплаты):

use GuzzleHttp\Client;

require 'vendor/autoload.php';

$client = new Client(['base_uri' => 'https://example.com']);

// Получаем заказы со статусом processing
$response = $client->request('GET', '/wp-json/wc/v3/orders', [
    'auth' => ['consumer_key', 'consumer_secret'],
    'query' => ['status' => 'processing']
]);
$orders = json_decode($response->getBody(), true);

foreach ($orders as $order) {
    $order_id = $order['id'];
    // Дополнительная логика проверки оплаты
    // Если оплата подтверждена — обновляем статус
    $client->request('PUT', "/wp-json/wc/v3/orders/{$order_id}", [
        'auth' => ['consumer_key', 'consumer_secret'],
        'json' => ['status' => 'completed']
    ]);
    echo "Заказ #{$order_id} обновлен на completed\n";
}

Шаг 3. Запуск скрипта по cron

Добавьте в crontab задачу:

*/15 * * * * /usr/bin/php /path/to/update-orders.php >> /var/log/update-orders.log 2>&1

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

  • Запустите скрипт вручную и убедитесь, что заказы обновляются корректно.
  • Проверьте логи сервера и ошибок PHP.
  • В админке WooCommerce убедитесь, что статус заказов изменился.
  • Для запроса GET https://example.com/wp-json/wc/v3/orders?status=completed убедитесь, что новые заказы отображаются.

Частые ошибки и их устранение

  • 401 Unauthorized — неверные ключи или недостаточные права. Проверьте права доступа ключа и правильность аутентификации.
  • 404 Not Found — неправильный endpoint или неактивирован WooCommerce REST API. Проверьте URL и включен ли REST API в WooCommerce.
  • 429 Too Many Requests — превышен лимит запросов. Добавьте задержки или кеширование.
  • Неверный формат JSON — убедитесь, что тело запроса корректно сформировано и заголовки Content-Type установлены в application/json.

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

  • Используйте HTTPS для всех запросов к API.
  • Не храните ключи API в общедоступных местах, используйте переменные окружения или конфигурационные файлы вне веб-директории.
  • Ограничьте права ключей по необходимости — если нужен только просмотр заказов, выдавайте права только на чтение.
  • Для высоконагруженных сайтов реализуйте кеширование ответов API, чтобы снизить нагрузку на сервер WooCommerce.
  • Используйте библиотеку Guzzle (или аналог) для удобной работы с REST API вместо самописных curl-запросов.

Сравнение вариантов работы с заказами WooCommerce

СпособПлюсыМинусыКогда использовать
REST APIГибкость, интеграции, автоматизация, стандартизованный интерфейсТребуется настройка авторизации, может быть медленнее при большом объемеИнтеграция с внешними системами, автоматизация процессов
WP CLIБыстрое выполнение команд на сервере, подходит для массовых операцийТребуется SSH доступ, не подходит для внешних интеграцийАдминистрирование и массовое обновление заказов вручную или скриптами
Прямой доступ к базе данныхМаксимальная скоростьРиск нарушения целостности данных, сложность поддержкиОчень специфичные задачи, когда API не подходит

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

⭐⭐⭐⭐⭐
Диагностика и решение проблем с нерабочими webhook в WooCommerce
11.06.2026
Как создать плагин для автоматического удаления спама в комментариях WordPress
30.11.2025
Как использовать WPCheck для мониторинга ошибок PHP в WordPress
12.02.2026
Как отключить autoload для плагинов в WordPress и улучшить производительность
01.03.2026
Диагностика и решение проблем с неработающими промо-кодами WooCommerce
22.04.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее