WP All Import — Casalusso Add-On
Add-on для WP All Import на сайте Casalusso: связывает импортированные товары WooCommerce с Polylang и настраивает переводимые таксономии при создании новых товаров.
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/fedirina/wpai-casalusso-add-on/archive/refs/heads/main.zipAdd-on для WP All Import на сайте Casalusso: связывает импортированные товары WooCommerce с Polylang и настраивает переводимые таксономии при создании новых товаров.
Не универсальный плагин. Это индивидуальная разработка под конкретные требования заказчика и конфигурацию проекта Casalusso: номера и настройки импортов WPAI, поля CSV (
scu,local), набор языков, атрибутыpa_*, связки с woo-poly-integration и woo-alt-variations. Для других сайтов на WooCommerce и Polylang плагин не подходит без переработки под их импорты, таксономии и бизнес-логику.
Плагин дополняет стандартный импорт WPAI и WooCommerce Add-On: Polylang и woo-poly-integration при импорте через WP All Import не вызываются автоматически (в отличие от создания перевода в админке).
Требования
- WordPress 6.2+
- PHP 7.4+
- WooCommerce
- Polylang (или Polylang Pro)
- WP All Import Pro или WP All Import + WooCommerce Add-On
- [woo-poly-integration_enhanced]
- [WooCommerce Alternative Variations] (мета
_display_with_quantity_attributes)
Без активных зависимостей плагин сам деактивируется и показывает уведомление в админке.
Что делает плагин
При импорте новых товаров
Хук: pmxi_saved_post, только если ! $is_update и в строке есть local.
-
Язык товара — из поля CSV
local(напримерru,en,de,tr). -
Связь переводов товара — по общему SKU (
scuв CSV, мета_skuв WooCommerce): все товары с одним SKU попадают в одну группуpost_translations. -
Подготовка таксономий в Polylang (
ensure_polylang_taxonomies_for_product) — если у товара есть термины/атрибуты и в woo-poly включена соответствующая опция (Settings → WooPoly → Features):- Translate Categories →
product_catдобавляется в переводимые таксономии Polylang, если ещё не включена; - Translate Tags → то же для
product_tag; - Translate Attributes → то же для каждого
pa_*, назначенного товару; collection(таксономия темы Casalusso) → включается автоматически, если зарегистрирована и у товара есть коллекция.
Add-on не создаёт термины и не назначает их товару — только программно ставит «галочку» перевода таксономии в Polylang (аналог Языки → Настройки → Custom taxonomies). Новые
pa_*, появившиеся при импорте, включаются автоматически — вручную в Polylang отмечать их не нужно. - Translate Categories →
-
Создание и назначение терминов из CSV (если WPAI не сделал этого) — при включённой опции woo-poly или для
collection:- Тэги / Tags →
product_tag; - Category →
product_cat(цепочкаРодитель > … > Лист); - Collection →
collection.
- Тэги / Tags →
-
Синхронизация таксономий — только если включена та же опция woo-poly (или таксономия
collectionактивна) и таксономия переводимая в Polylang (pll_is_translated_taxonomy):product_cat— язык терминов (включая родителей в цепочке) и связи переводов между языками по SKU; иерархия по глубине (один термин на язык на уровень);product_tag— язык и связи переводов; для нескольких тегов сопоставление поterm_order(одинаковое число тегов на всех языках);collection— плоская логика, как у тегов;- *`pa_`** — для всех переводимых таксономий атрибутов на товаре; та же плоская логика, что у тегов.
Термины атрибутов не создаёт add-on: их создаёт WPAI. Теги, категории и коллекции add-on создаёт из CSV (Тэги / Tags, Category, Collection). Значения атрибутов в CSV должны быть на каждом языке — add-on не копирует термины с ru, как woo-poly в админке.
Порядок при импорте одного товара: язык и post_translations → ensure_* (Polylang) → sync_* (язык терминов + связи).
При любом импорте товара (create и update)
- Мета
_display_with_quantity_attributesдля атрибутаpa_czvet(интеграция с темой / alt-variations).
Импорт альт. вариаций (vars_info)
Отдельный update-импорт WPAI: запись мета vars_info для плагина woo-alt-variations. Номер импорта не важен — важно содержимое CSV и настройки шаблона.
Функция wpai_casalusso_make_vars_string() преобразует поле Alt_variations из CSV в JSON. В настройках импорта custom field:
vars_info = [wpai_casalusso_make_vars_string({alt_variations[1]}, {local[1]})]
Второй аргумент {local[1]} обязателен: WPAI разбирает custom fields до цикла по строкам, без него язык не определяется.
Отладочный лог: wp-content/import_alt_variatios.log.
Настройка шаблонов WPAI
Ниже — минимальные рабочие настройки для трёх сценариев.
1) Простые товары (create/update с учетом языка)
- Тип импорта:
product. - Условие включения логики add-on: в строке CSV есть
local. - Ключевые поля сопоставления в шаблоне: SKU товара (
scu/SKU) + языкlocal. - Важно: значения переводимых полей (Title, Category, Tags,
pa_*) должны быть на языке строки.
2) Вариативные товары (родитель + вариации, с учетом языка)
- Тип импорта:
product+ WooCommerce Add-On (режим variable, напримерfirst_is_variation). - Обязательно в данных строки:
localиParent_SCU(или_parent_sku). - Что делает add-on: после строки вариации корректирует
post_parentпо пареParent_SCU + local. - Номер импорта не используется: можно запускать с любым ID.
3) Альт. вариации (vars_info) — отдельный update-импорт
- Тип импорта:
product, режим Update existing. - Custom field в шаблоне:
vars_info = [wpai_casalusso_make_vars_string({alt_variations[1]}, {local[1]})]
- Для простых товаров: используйте файл вида
alt_variations_CL-import-simple-2026-05-26.csv. - Для variable parent: используйте файл вида
alt_variations_CL-import-variative-parents-2026-05-27.csv. - Важно: если включен пропуск «запись не изменилась», WPAI может не перезаписать
vars_info.
Ожидаемый формат CSV
Простые товары (create/update)
| Поле | Обязательно | Назначение |
|---|---|---|
scu/SKU |
да | SKU товара (уникален в рамках языка/записи) |
local |
да | Код языка Polylang (ru, en, de, tr, …) |
Title |
рекомендуется | Название на языке строки (для читаемости и сопоставления) |
Category, Tags, pa_* |
по задаче | Значения на языке строки |
Остальные поля обрабатывает WP All Import / WooCommerce Add-On (название, описание, категории, атрибуты, цены и т.д.).
Вариативные товары (родитель + вариации)
| Поле | Обязательно | Назначение |
|---|---|---|
SCU |
да | SKU текущей строки (родитель или вариация) |
Parent_SCU |
да | SKU родителя модели (для родителя = свой SKU) |
Local |
да | Код языка (ru, en, de, tr) |
Title |
да | Название на языке строки |
Size, Color, цены и т.д. |
по задаче | Данные вариации/родителя |
Пример тестового файла: wp-content/uploads/wpallimport/files/CL-import-variative-with-parent_2-import.csv.
Альт. вариации (простые и variable parent)
Режим: обновить существующие записи. Сопоставление строки с товаром — по Title + SKU + Local.
| Колонка CSV | Обязательно | Назначение |
|---|---|---|
Title |
да | Название товара на языке Local; ключ для поиска записи в WPAI |
SKU |
да | Артикул редактируемого товара (_sku в WooCommerce) |
Local |
да | Код языка Polylang: ru, en, de, tr |
Alt_variations |
да | Связи альт. вариаций для этого товара (формат ниже) |
ID |
нет | Справочный SKU; на импорт не влияет |
Формат Alt_variations — одна строка на товар:
ИмяАтрибута|SKU1,Значение1;SKU2,Значение2;SKU3,Значение3
- До
|— подпись атрибута (напримерЦвет,Color,Renk,Farbe). - После
|— пары через;, в каждой паре: SKU связанного товара, запятая, подпись варианта (var_attr_value). - В списке должен быть SKU текущего товара с подписью его цвета/варианта.
- В
Alt_variationsуказываются SKU, неpost_id. - Для variable parent в списке должны быть SKU родителей этой же языковой версии.
Пример (ru):
Цвет|118721,Голубиный серый;118752,Папирус;118738,Арагон
Для строки с SKU=118752 и Local=ru в vars_info попадут post_id товаров 118721, 118752, 118738 на русском, а не en/de/tr.
Правила:
- Одна строка CSV = один товар = один язык. Для той же модели на
en— отдельная строка с переводами вTitleиAlt_variationsи SKU английских постов. - SKU в списке должны существовать в WooCommerce на языке
Local; иначе пара пропускается (см. лог). - Сначала импорт товаров (simple/variable), затем импорт alt-вариаций.
- Кодировка файла: UTF-8; разделитель — как в настройках update-импорта alt-вариаций (на dev:
;). - Поле
Alt_variationsс запятыми и;в Excel — в кавычках.
Файлы на dev:
wp-content/uploads/wpallimport/files/alt_variations_CL-import-simple-2026-05-26.csv(простые)wp-content/uploads/wpallimport/files/alt_variations_CL-import-variative-parents-2026-05-27.csv(родители variable)
Рекомендуемый порядок импорта
- Сначала язык по умолчанию (ru), затем остальные (en, de, tr).
- В каждой строке CSV — свои переводимые значения (название, категории, теги, термины
pa_*). - Для нескольких тегов или значений одного атрибута на товаре — одинаковый порядок значений во всех языковых строках с тем же SKU.
- В Settings → WooPoly → Features включите Translate Categories, Translate Tags и Translate Attributes для тех таксономий, которые нужно обрабатывать при импорте. Если опция выключена, add-on не включает таксономию в Polylang и не синхронизирует её термины.
- После импорта simple/variable запускайте отдельный update-импорт для
vars_info.
Логирование
При обработке новых товаров (create-импорт с local) пишется лог:
wp-content/uploads/product_taxonomies.log
В лог попадают включение таксономий в Polylang (enabled polylang translation for …) и результаты синхронизации терминов.
Ограничения и что не входит в плагин
| Область | Поведение |
|---|---|
Обновление существующих товаров ($is_update) |
Polylang и таксономии не пересобираются; обновляется _display_with_quantity_attributes и данные custom fields (в т.ч. vars_info, если настроено в WPAI). |
| Meta woo-poly (цены, остатки, SKU, …) | Не синхронизируются с ru на переводы (в админке это делает woo-poly). |
| Вариации variable | Не создаются переводы вариаций и _point_to_variation. |
| Yoast SEO | Пересборка indexable после импорта временно отключена в коде. |
| Создание терминов | WPAI или add-on: теги, категории, collection (CSV) — add-on; атрибуты pa_* — WPAI; add-on ставит язык и связи. |
| Опции woo-poly | Синхронизация cat/tag/pa_* только при включённых Translate Categories / Tags / Attributes (Settings → WooPoly → Features). |
| *Новые `pa_` при импорте** | Add-on автоматически включает таксономию в Polylang при первом импорте товара с этим атрибутом (create). Для уже импортированных товаров без повторного create — нет. |
Подробный разбор отличий от сценария «Добавить перевод» в админке + woo-poly: docs/woo-poly-integration-import-analysis.txt.
Структура
wpai-casalusso-add-on/
├── wpai-casalusso-add-on.php # bootstrap
├── includes/
│ ├── class-wpai-casalusso-import.php
│ ├── class-wpai-casalusso-dependencies.php
│ └── wpai-casalusso-functions.php
└── docs/
└── woo-poly-integration-import-analysis.txt
Установка
- Склонировать репозиторий в
wp-content/plugins/wpai-casalusso-add-on/. - Активировать плагин в WordPress после установки всех зависимостей.
- Настроить шаблоны WPAI для простых, вариативных и alt-вариаций по разделам «Настройка шаблонов WPAI» и «Ожидаемый формат CSV».
Автор
Irina Feodorova
Лицензия
GNU General Public License v2.0 or later (GPL-2.0-or-later) — стандартная лицензия для плагинов WordPress. Полный текст: LICENSE.
Copyright © 2026 Irina Feodorova