DeadTools ZipTrading XLSX Catalog
Версия: 0.3.10
Автор: DeadTools
Сайт: https://deadtools.ru/tools/deadtools-ziptrading-xlsx-catalog.php
НАЗНАЧЕНИЕ
Специализированный плагин импорта и экспорта каталога ZipTrading в формате XLSX. Добавляет в административный каталог товаров отдельные разделы «Экспорт» и «Импорт» для типа записи zt_product.

ЭКСПОРТ XLSX
1. Позволяет выбирать, какие категории и товары выгружать.
2. Поддерживает выбор статусов товаров.
3. Можно выбрать отдельные поля вместо фиксированного полного набора.
4. Можно отдельно выбирать технические характеристики; доступные характеристики фильтруются по выбранным категориям с учётом общих/наследуемых параметров.
5. Поддерживаются товары без категории.
6. Два режима структуры XLSX:
   - «По листам» — основные категории первого уровня выгружаются на отдельные листы;
   - «Одним листом» — выбранные товары объединяются на листе «Все товары».
7. Есть режим выгрузки/пропуска полностью пустых выбранных столбцов.
8. Экспорт читает данные каждого товара в единый снимок, после чего XLSX собирается из временных данных пакетно.
9. В файл могут попадать WordPress ID, основные поля записи, данные товара, артикулы, цены, наличие, бренд, категории, фотографии, галерея, сертификаты, файлы, связанные товары, SEO и характеристики — в зависимости от выбранных полей.
10. Внутри XLSX создаётся скрытый лист _meta с технической картой полей, характеристик, категорий, листов и параметров экспорта.
11. Готовые XLSX сохраняются постоянно, отображаются в истории и имеют прямые ссылки на скачивание.
12. История поддерживает одиночное и массовое удаление файлов.
13. Готовый XLSX проходит проверку безопасности: отклоняются формулы, макросы, ActiveX, OLE, внешние Excel-связи и запрещённые relationship.

ИМПОРТ XLSX
1. Перед фактическим импортом выполняется анализ файла и обязательное сопоставление столбцов.
2. Известные столбцы распознаются автоматически; неизвестные требуют ручного выбора поля или явного «Не импортировать».
3. Для XLSX, созданных этим же экспортёром, технические ключи читаются из скрытого _meta отдельно по листу и позиции колонки.
4. Это позволяет различать характеристики с одинаковыми видимыми названиями.
5. Для многолистового файла сопоставление показывается по отдельным вкладкам листов.
6. Главный идентификатор товара — WordPress ID.
7. Если товар с таким ID существует, обновляется он.
8. Если ID свободен, новый товар может быть создан с этим ID через штатный import_id WordPress.
9. Если ID занят записью другого типа, чужая запись не изменяется; товар создаётся с другим свободным ID.
10. Если WordPress ID пуст, создаётся новый товар с автоматическим ID.
11. Импортируются только столбцы, присутствующие в XLSX. Пустая ячейка очищает соответствующее импортируемое поле; отсутствующий столбец не затрагивает данные.
12. Поддерживаются название, slug, статус, HTML-описания, артикулы, цены, наличие, бренд, категории, SEO, изображения, файлы, сертификаты, связанные товары и технические характеристики.
13. Категории/бренд ищутся по ID, затем по slug/названию; отсутствующая иерархия категорий может восстанавливаться по полному пути.
14. Изображения и сертификаты привязываются к существующим вложениям WordPress по URL без обязательной повторной загрузки.
15. Повторяющиеся WordPress ID на разных листах импортируются один раз.
16. Импорт выполняется пакетами через AJAX с отображением прогресса и возможностью безопасного прерывания.
17. XLSX с формулами, макросами, ActiveX, OLE/вложениями или внешними Excel-связями отклоняются до импорта.

РЕЗЕРВНОЕ КОПИРОВАНИЕ В ЭТОЙ ВЕРСИИ
В версии из предоставленного бэкапа перед изменением первого товара импортёр автоматически создаёт обязательный ПОЛНЫЙ дамп текущей базы данных.
- Импорт не начинает изменять товары, пока дамп не завершён.
- Для дампа вычисляется и проверяется SHA-256.
- Незавершённые копии очищаются и не попадают в историю.
- Дампы сохраняются в защищённом каталоге и не удаляются обычной очисткой временных заданий.
- В административной истории доступны скачивание, восстановление, одиночное и массовое удаление.
- Восстановление выполняется пакетами через AJAX, чтобы уменьшить риск таймаута.

ВАЖНО
Этот текст описывает именно код версии 0.3.10 из предоставленного бэкапа. В нём резервная копия перед импортом является полным обязательным дампом БД.

ХРАНЕНИЕ И БЕЗОПАСНОСТЬ
- Временные задания хранятся в защищённом системном каталоге.
- Постоянные экспортированные XLSX хранятся отдельно от временных заданий.
- Каталоги экспорта и резервных копий получают защитные серверные файлы/правила.
- Имена листов нормализуются под ограничения Excel, включая 31 Unicode-символ.
- Прямые ссылки на XLSX принудительно формируются через HTTPS.

ТЕХНИЧЕСКИЕ ЗАВИСИМОСТИ
Плагин рассчитан на структуру каталога ZipTrading и тип записи zt_product. Для работы с импортом используется собственный класс ZT_XLSX_Importer.
