Как использовать 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Экстренные случаи, опытным разработчикам
Использование хука woocommerce_checkout_update_order_meta для добавления данных к заказу в WooCommerce
28.06.2026
Как использовать хук woocommerce_before_checkout_form для добавления собственного блока на страницу оформления заказа WooCommerce
15.06.2026
Как удалить пустые категории в WordPress с помощью кода
06.01.2026
Как создать автоматический импорт продуктов в WordPress с помощью REST API
29.03.2026
Как установить и настроить php.ini для WordPress на VPS
22.03.2026