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

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

Если вы управляете интернет-магазином на WooCommerce, часто возникает необходимость массово добавлять или обновлять товары из внешних источников (поставщики, ERP-системы, CSV-файлы). Ручной ввод данных неудобен и подвержен ошибкам. REST API WooCommerce позволяет автоматизировать этот процесс, программно создавая и редактируя карточки товаров.

Подключение и аутентификация к WooCommerce REST API

Перед началом работы нужно получить ключи API в панели WooCommerce (WooCommerce > Settings > Advanced > REST API). Они нужны для безопасного доступа к данным магазина.

Для примера используем PHP с библиотекой GuzzleHTTP, но можно применять curl или другие HTTP-клиенты.

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://yourshop.ru/wp-json/wc/v3/',
    'auth' => ['consumer_key', 'consumer_secret'],
]);

Пример: создание нового товара через REST API

Для создания товара отправляем POST-запрос на /products с JSON-данными.

$data = [
    'name' => 'Новый продукт',
    'type' => 'simple',
    'regular_price' => '1500',
    'description' => 'Описание товара',
    'categories' => [ ['id' => 15] ],
    'images' => [ ['src' => 'https://example.com/image.jpg'] ]
];

$response = $client->post('products', [
    'json' => $data
]);

$product = json_decode($response->getBody(), true);
echo 'Создан товар с ID: ' . $product['id'];

Пример: обновление существующего товара

Чтобы обновить товар, нужно знать его ID и отправить PUT-запрос.

$product_id = 123;
$update_data = [
    'regular_price' => '1400',
    'description' => 'Обновленное описание'
];

$response = $client->put("products/{$product_id}", [
    'json' => $update_data
]);

$product = json_decode($response->getBody(), true);
echo 'Обновлен товар: ' . $product['name'];

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

  • Зайдите в админку WooCommerce и проверьте наличие созданного/обновленного товара.
  • Отправьте GET-запрос к API /products/{id} для проверки полей.
  • Убедитесь, что поля цены, описания и изображений соответствуют ожидаемым.

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

  • Ошибка 401 Unauthorized: Проверьте правильность ключей и права доступа в WooCommerce.
  • Ошибка 400 Bad Request: Проблемы с форматированием JSON или обязательными полями. Проверяйте структуру данных.
  • Отсутствие изображения: URL должен быть публично доступен, иначе загрузка не пройдет.
  • Обновление не работает: Проверьте, что передаете правильный ID товара и используете PUT, а не POST.

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

  • Используйте HTTPS для всех запросов к API.
  • Ограничьте права ключей API только нужными возможностями (например, только на чтение и запись товаров).
  • Реализуйте обработку ошибок и повторные попытки при неудачах, чтобы избежать потери данных.
  • Для массовых операций используйте пакетную обработку, чтобы снизить нагрузку на сервер (например, делайте запросы партиями по 50 товаров).

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

  • Получены и проверены ключи API с нужными правами.
  • Используется правильный endpoint (https://yourshop.ru/wp-json/wc/v3/products).
  • Данные товаров валидны и содержат обязательные поля (name, type, regular_price).
  • Изображения доступны по публичным URL.
  • При обновлении указан правильный ID товара.
  • Обрабатываются ошибки API и логируются для отладки.
  • Проверены результаты в админке и через API-запросы.

Сравнение способов импорта: плагин vs собственный код через REST API

МетодПреимуществаНедостатки
Плагин импортаПростота настройки, визуальный интерфейс, готовые решенияНагрузка на сайт, ограниченная гибкость, возможные конфликты
REST API + собственный кодМаксимальная гибкость, автоматизация, интеграция с внешними системамиТребует навыков программирования, настройка сложнее
Как избежать конфликтов между плагинами в WordPress
18.01.2026
Очистка базы данных WooCommerce от старых заказов через пользовательское поле meta
23.04.2026
Как создать собственный виджет в WordPress с примерами кода
06.03.2026
Автоматическое удаление старых мультимедиа в WordPress: практические решения
12.04.2026
Как создать собственный объект метаданных в WordPress для расширенного хранения данных
19.03.2026