Что такое 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 | Экстренные случаи, опытным разработчикам |