Большой каталог редко приходит в формате, который можно без проверки загрузить в WooCommerce. Поставщик присылает XLSX, ERP отдаёт собственные поля, изображения лежат по URL, категории называются по-разному, а часть товаров уже существует на сайте.
Эта статья полезна интернет-магазинам, которым нужно разово перенести сотни товаров или регулярно обновлять цены, остатки и карточки. Разберём встроенный CSV-импорт WooCommerce, подготовку данных скриптом и API-синхронизацию — и главное, как не получить дубли при повторном запуске.
Основной принцип: сначала определить стабильный идентификатор товара и правила обновления, а уже потом выбирать инструмент импорта.
Какие задачи решает массовый импорт
Массовая загрузка нужна не только при запуске нового магазина. Она используется при миграции каталога, подключении поставщика, смене учётной системы и регулярном обновлении коммерческих данных.
- создание новых товаров;
- обновление цен и остатков;
- создание категорий и атрибутов;
- загрузка изображений;
- создание вариаций;
- синхронизация внешнего каталога с WooCommerce.
Архитектура безопасного импорта
- ИсточникCSV, XLSX, API поставщика, CRM или ERP
- НормализацияПоля приводятся к единой структуре и формату
- СопоставлениеТовар связывается по SKU или другому устойчивому ID
- ИмпортСоздаются новые и обновляются существующие записи
- КонтрольОшибки, пропуски и результат фиксируются для повторного запуска
Главный принцип: повторный запуск должен обновлять тот же товар, а не создавать его копию.
Вариант 1: встроенный CSV-импорт WooCommerce
В WooCommerce есть штатный инструмент Product CSV Importer and Exporter. Он позволяет добавлять товары, экспортировать каталог и массово обновлять существующие позиции. Официальная документация рекомендует UTF-8 CSV и описывает схему колонок для стандартных полей.
Для обновления существующих товаров WooCommerce может сопоставлять строки по ID или SKU. Это делает CSV удобным для разовой загрузки и контролируемых пакетных обновлений.
| Сценарий | Подход | Комментарий |
|---|---|---|
| Новый небольшой каталог | Встроенный CSV | Минимум разработки |
| Повторное обновление цен | CSV + SKU | Важно сохранить стабильные SKU |
| Сложный файл поставщика | Предобработка скриптом | Нужна нормализация полей |
| Регулярная синхронизация | API/очередь | Лучше автоматизировать обмен |
Почему SKU важнее названия
Название товара — плохой ключ для синхронизации: маркетолог может его изменить, добавить объём, бренд или уточнение. Если импорт ищет совпадение только по заголовку, повторная загрузка легко создаёт дубль.
Для стандартного CSV WooCommerce поддерживает сопоставление существующих товаров по ID или SKU. В интеграции с внешней системой ещё надёжнее хранить отдельное соответствие между внутренним ID WooCommerce и ID источника.
Как подготовить файл поставщика
- Определить, какое поле является уникальным идентификатором.
- Привести кодировку к UTF-8.
- Нормализовать названия категорий и атрибутов.
- Удалить формулы и декоративное форматирование XLSX.
- Разделить цену, остаток и текстовые поля.
- Проверить URL изображений.
- Сформировать тестовый файл из нескольких товаров.
Если исходный XLSX не соответствует схеме WooCommerce, безопаснее сначала преобразовать его в нормализованный CSV. Скрипт может переименовать колонки, очистить пробелы, преобразовать числа и сформировать категории по правилам.
Вариации: родитель и дочерние товары
Для вариативных товаров структура сложнее. В официальной документации WooCommerce родитель имеет тип variable, а строки вариантов — variation. Каждой вариации нужен собственный SKU, а поле Parent связывает её с родительским товаром.
Type,SKU,Parent,Name
variable,shirt-001,,Футболка
variation,shirt-001-s,shirt-001,Футболка S
variation,shirt-001-m,shirt-001,Футболка M
Перед массовым импортом вариаций стоит проверить один родительский товар и несколько вариантов. Ошибка в атрибутах, Parent или SKU при большом объёме размножается на весь каталог.
Изображения и внешние URL
Встроенный импорт WooCommerce умеет использовать уже загруженные изображения и прямые внешние URL. По документации URL должен вести непосредственно к доступному изображению; ссылки через некоторые redirect-сервисы не поддерживаются.
При большом каталоге полезно заранее проверить HTTP-ответы, MIME и дубли файлов. Иначе импорт товаров завершится, а медиатека будет заполнена ошибками или повторяющимися изображениями.
Когда CSV уже недостаточно
CSV удобен, когда импорт запускается вручную и данные обновляются периодически. Но если поставщик меняет остатки несколько раз в день или каталог приходит из API, ручная загрузка становится операционной задачей.
Тогда имеет смысл сделать автоматизацию бизнес-процесса: получать изменения по расписанию или событию, нормализовать их, обновлять только изменившиеся позиции и сохранять результат каждой операции.
Пакетная обработка вместо одного огромного запроса
Официальная документация WooCommerce отдельно предупреждает, что большие CSV могут упираться в память, размер загрузки и время выполнения на сервере. Для крупных каталогов разумно тестировать на staging и делить импорт на управляемые партии.
Для API-интеграции действует тот же инженерный принцип: очередь небольших задач проще повторить после временной ошибки, чем заново запускать монолитную синхронизацию всего каталога.
Что нельзя перезаписывать без правил
Не все поля должны принадлежать поставщику. Например, цена и остаток могут приходить из ERP, а SEO-текст, фотографии и описание редактироваться на сайте. Если импорт безусловно обновляет каждое поле, он уничтожит ручную работу контент-менеджера.
- зафиксируйте источник истины для каждого поля;
- разделите импорт новых товаров и обновление существующих;
- не обновляйте SEO-поля, если источник ими не управляет;
- логируйте, какие значения были изменены;
- предусмотрите dry-run или тестовую выборку.
Когда нужен кастомный импортёр
Кастомная разработка WooCommerce оправданна, когда поставщик использует нестандартную структуру, есть несколько источников, сложные правила категорий, собственные метаполя или регулярная синхронизация.
В таком решении полезно разделить получение данных, нормализацию, сопоставление и запись в WooCommerce. Тогда смена поставщика не требует переписывать весь импортёр.
Типичные ошибки
- поиск товара только по названию;
- неуникальные SKU у вариаций;
- импорт полного каталога без тестовой партии;
- безусловная перезапись всех полей;
- отсутствие журнала ошибок;
- повторная загрузка изображений при каждом запуске;
- запуск тяжёлой синхронизации одним HTTP-запросом.
Чек-лист перед запуском
- Определён уникальный ключ товара.
- Проверена кодировка и схема CSV.
- Категории и атрибуты нормализованы.
- Вариации имеют уникальные SKU и правильный Parent.
- URL изображений доступны напрямую.
- Определены поля, которые разрешено обновлять.
- Сделан резервный снимок или staging-копия.
- Тестовая партия импортируется без дублей.
- Есть журнал пропущенных и ошибочных строк.
Когда выбрать другой вариант
Если каталог небольшой и меняется редко, встроенного CSV достаточно. Если данные живут в CRM, ERP или у поставщика и должны обновляться автоматически, лучше сразу проектировать API-интеграцию. Если задача разовая, но исходный файл сложный, часто достаточно отдельного преобразователя XLSX → нормализованный CSV.
Частые вопросы
Можно ли импортировать товары в WooCommerce без плагина?
Да. В WooCommerce есть встроенный CSV importer/exporter для стандартных полей товаров.
Как обновлять товары без дублей?
Используйте стабильный SKU или ID и режим обновления существующих товаров. В кастомной интеграции храните соответствие внешнего ID и ID WooCommerce.
Можно ли загрузить вариации через CSV?
Да. WooCommerce поддерживает variable и variation строки, но нужно корректно задать Parent, атрибуты и уникальные SKU вариантов.
Можно ли импортировать изображения по URL?
Да, если URL ведёт напрямую к доступному изображению. Перед большим импортом ссылки лучше проверить автоматически.
Что делать с XLSX поставщика?
Обычно его нормализуют и преобразуют в UTF-8 CSV или читают отдельным скриптом, который формирует данные для WooCommerce.
Когда нужен API вместо CSV?
Когда обновления регулярные, источник доступен программно или требуется почти оперативная синхронизация цен и остатков.
Вывод
Массовый импорт WooCommerce — это задача сопоставления данных, а не просто загрузка файла. Если заранее определить ключи, владельца каждого поля и правила повторного запуска, каталог можно обновлять предсказуемо и без дублей.
Если у вас есть файл поставщика, API или действующий магазин, можно заказать доработку WordPress или разработку импортёра под конкретную структуру. Для оценки достаточно описать источник данных, объём каталога и какие поля должны обновляться. Связаться с A.S Groups.
Обсуждение
Вопросы и комментарии
Можно уточнить детали статьи или поделиться своим опытом. Первый комментарий проходит проверку.