Диагностика задачи: зачем нужен автоматический импорт и обновление товаров
Если вы управляете интернет-магазином на 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 + собственный код | Максимальная гибкость, автоматизация, интеграция с внешними системами | Требует навыков программирования, настройка сложнее |