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

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

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

Диагностика задачи: когда нужен массовый апдейт через REST API

Признаки необходимости использовать REST API для массового изменения товаров:

  • Ручное редактирование товаров через админку занимает много времени;
  • Нужно регулярно обновлять цены или характеристики по внешним данным;
  • Импортировать изменения из ERP/CRM систем;
  • Обновлять метаданные или атрибуты товаров по сложным правилам.

Пошаговое решение: массовое обновление товаров через WooCommerce REST API

1. Получение ключей API

В админке WooCommerce перейдите в WooCommerce > Настройки > Продвинутые > REST API, создайте ключ с правами чтения и записи. Запишите Consumer Key и Consumer Secret.

2. Формирование запроса на обновление

Для обновления нескольких товаров используйте пакетный запрос PATCH (или PUT) к эндпоинту /wp-json/wc/v3/products/batch. В теле передайте массив с изменениями.

POST /wp-json/wc/v3/products/batch
Content-Type: application/json
Authorization: Basic base64(consumer_key:consumer_secret)

{
  "update": [
    {
      "id": 123,
      "regular_price": "29.99",
      "description": "Новое описание товара"
    },
    {
      "id": 124,
      "regular_price": "19.99",
      "meta_data": [
        {
          "key": "custom_attribute",
          "value": "value1"
        }
      ]
    }
  ]
}

3. Пример кода на 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/batch', [
    'json' => [
        'update' => [
            [
                'id' => 123,
                'regular_price' => '29.99',
                'description' => 'Новое описание товара',
            ],
            [
                'id' => 124,
                'regular_price' => '19.99',
                'meta_data' => [
                    [
                        'key' => 'custom_attribute',
                        'value' => 'value1',
                    ],
                ],
            ],
        ],
    ],
]);

$data = json_decode($response->getBody(), true);
print_r($data);

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

После выполнения запроса проверьте:

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

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

  • Ошибка 401 Unauthorized: Проверьте правильность ключей API и права доступа.
  • Ошибка 400 Bad Request: Проверьте формат JSON и обязательные поля в запросе.
  • Обновление не происходит: Убедитесь, что передаете верные ID товаров и правильные названия полей.
  • Медленная обработка: Разбейте обновление на меньшие пакеты по 50-100 товаров, чтобы избежать тайм-аутов.

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

  • Используйте HTTPS для защищенного соединения с API.
  • Ограничьте ключи API IP-адресами, откуда будут приходить запросы.
  • Для массовых обновлений планируйте обработку в фоне (через cron или wp-cli), чтобы не блокировать сайт.
  • Кэшируйте результаты запросов, если часто обращаетесь к API для чтения.

Сравнение способов массового обновления товаров

МетодПлюсыМинусыКогда использовать
REST API пакетное обновлениеАвтоматизация, поддержка WooCommerce, безопасностьНужны базовые знания API, возможен тайм-аут при больших пакетахРегулярные обновления большого каталога
Импорт CSV через админкуПростота, не требует кодаРучная работа, ограниченные возможности автоматизацииРазовые обновления
Прямое обновление БДБыстротаРиск повредить данные, не поддерживается WooCommerceЭкстренные случаи, опытным разработчикам