WooCommerce: автоматическое создание и обновление складских остатков через REST API

Диагностика проблемы с обновлением складских остатков

Часто при интеграции WooCommerce с внешними системами (ERP, CRM, складскими сервисами) возникает необходимость автоматически обновлять количество товара на складе. Без автоматизации приходится вручную вносить изменения, что ведёт к ошибкам и задержкам. Основные признаки проблемы:

  • Отсутствие актуального количества товаров в админке WooCommerce;
  • Заказы оформляются с некорректным запасом;
  • Ручное обновление занимает много времени и приводит к ошибкам.

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

Пошаговое решение: интеграция с REST API WooCommerce для обновления остатков

1. Включение и настройка REST API в WooCommerce

Перейдите в WooCommerce > Настройки > Продвинутые > REST API и создайте ключи с правами read/write. Сохраните Consumer Key и Consumer Secret, они понадобятся для авторизации.

2. Пример создания товара через REST API

Для создания товара используется эндпоинт /wp-json/wc/v3/products. Пример запроса на PHP с использованием Guzzle:

use GuzzleHttp\Client;

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

$response = $client->post('wp-json/wc/v3/products', [
    'json' => [
        'name' => 'Новый товар',
        'type' => 'simple',
        'regular_price' => '1500',
        'stock_quantity' => 20,
        'manage_stock' => true,
        'stock_status' => 'instock'
    ]
]);

echo $response->getBody();

3. Обновление складского остатка товара

Для изменения количества на складе используйте PATCH-запрос к /wp-json/wc/v3/products/{id} с параметрами stock_quantity и manage_stock:

$response = $client->put('wp-json/wc/v3/products/123', [
    'json' => [
        'stock_quantity' => 15,
        'manage_stock' => true
    ]
]);

Где 123 — ID товара в WooCommerce.

4. Автоматизация обновлений с помощью WP-Cron

Чтобы обновлять остатки автоматически, можно создать планировщик задач на стороне WordPress, который будет выполнять запросы к API внешней системы и обновлять товары.

add_action('wp_update_stock_event', 'update_stock_from_api');

function update_stock_from_api() {
    // Получаем данные со склада через API
    $stock_data = fetch_stock_data_external();
    foreach ($stock_data as $item) {
        // Обновляем остаток через WC REST API или напрямую через WC_Product
        $product = wc_get_product($item['wc_product_id']);
        if ($product) {
            $product->set_stock_quantity($item['quantity']);
            $product->save();
        }
    }
}

if (!wp_next_scheduled('wp_update_stock_event')) {
    wp_schedule_event(time(), 'hourly', 'wp_update_stock_event');
}

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

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

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

  • Ошибка 401 Unauthorized — неверные ключи REST API или недостаточные права. Проверьте настройки API и права пользователя.
  • Ошибка 400 Bad Request — неверный формат запроса или пропущенные обязательные поля. Используйте инструменты отладки, например Postman, чтобы проверить запросы.
  • Обновления не применяются — возможно, кэширование или конфликт плагинов мешает обновлению. Очистите кэш и отключите подозрительные плагины.
  • WP-Cron не срабатывает — если на хостинге отключён WP-Cron, настройте системный cron для вызова wp-cron.php.

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

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

Сравнение способов обновления складских остатков

МетодПлюсыМинусыКогда использовать
REST API WooCommerceСтандартный способ, поддерживается ядром, легко интегрируется с внешними системамиНужно настраивать авторизацию, возможна задержка из-за HTTP-запросовИнтеграция с внешними ERP, CRM, мобильными приложениями
Прямое обновление через WC_Product (PHP)Быстрое обновление внутри WP, без дополнительных запросовНельзя использовать вне WP, требует запуска кода на сервереАвтоматизация внутри WordPress, в планировщиках и хуках
Плагины для синхронизации складовГотовые решения, часто с поддержкой популярных ERPМогут быть платными, ограниченная гибкостьБыстрый старт без программирования
Как удалить пустые теги и мета-теги в WordPress
13.03.2026
Как создать уникальные ссылки для автоматического редиректа в WordPress
19.02.2026
WooCommerce: автоматическое отключение платёжных систем по расписанию
27.06.2026
WooCommerce: автоматическое изменение стоимости товаров по расписанию
12.07.2026
WooCommerce: решение проблемы с повторной отправкой email при изменении цены товара
01.07.2026