WP All Import

T
На сайте с 24.07.2008
Offline
112
654

Задача:

есть xml файл категорий товаров, необходимо их залить в WP Woocommerce.

Категории имеют иерархию, пример xml:


<category id="10077">Одежда</category>
<category parentId="10077" id="10078">Футболки</category>

Используем плагин WP All Import, который по заявлению разработчика обладает всем необходимым функционалом.

Во время настройки импорта плагин спрашивает какие поля отвечают за уникальный идентификатор категории, и какой за иерархию. Всё заполнено.

Делаем импорт, категории импортируются, но в процессе импорта категориям присваивается новый ПОРЯДКОВЫЙ номер ID, из-за чего вся иерархия категорий идёт под хвост коту. А их больше двух тысяч и исправлять всё руками смысла нет.

Подскажите пожалуйста, может быть есть возможность заставить WP присваивать нужный ID записям?

SV
На сайте с 03.11.2008
Offline
1395
#1
Tempter:
Подскажите пожалуйста, может быть есть возможность заставить WP присваивать нужный ID записям?

ID - это ссурогатный ключ, который автоматически генерится.

Синхронизируй не по ID, а по др полям. SСU напр.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Топики помощи с ⓌordPress (https://searchengines.guru/ru/forum/1032910 ) и основы безопасности сайтов ( https://searchengines.guru/ru/forum/774117 ). *** Помощь\консультации в топиках форума - БЕСПЛАТНО. Платные услуги ( https://wp.me/P3YHjQ-3 ) - с бюджетом от 150$ ***
T
На сайте с 24.07.2008
Offline
112
#2

У категорий нет SCU

SV
На сайте с 03.11.2008
Offline
1395
#3
Tempter:
У категорий нет SCU

Так ты импортируй ТОВАРЫ. Они в категориях.

T
На сайте с 24.07.2008
Offline
112
#4

Товары связываются с категориями по тем же ID о которых идёт речь:


<offer type="vendor.model" id="14" available="true">
<url>----</url>
<price>297</price>
<currencyId>RUB</currencyId>
<categoryId>963</categoryId>
<delivery>true</delivery>
<vendor>Спортмастер</vendor>
<model>Футболка Denim Sport Желтая</model>
<vendorCode>4519746743234</vendorCode>
<picture>---</picture>
<manufacturer_warranty>true</manufacturer_warranty>
<pickup>true</pickup>
<store>true</store>
<productInStock label="На складе.">3</productInStock>
</offer>

залью я товары с несуществующими categoryId, и чем мне это поможет?

Походу без лазанья в MySQL на прямую не обойтись (((

SV
На сайте с 03.11.2008
Offline
1395
#5

Tempter, мне кацца ты не верно понимаешь логику/архитектуру ВП и WC соответственно.

См. Тут не линейная иерархия сущностей (категория->подкатегория->товар), а всё крутится вокруг одной, основной сущности. Это пост (товар в WC). Всё остальное - это его "свойства" (таксономии если говорить о категориях товара).

Tempter:
залью я товары с несуществующими categoryId, и чем мне это поможет?

Ещё раз - не по ID нужно синхронизировать, а по др. полям. Что мешает прямо по названию это сделать?

В общем тебе для начала нужно преобразовать файл импорта.

---------- Добавлено 02.07.2019 в 21:46 ----------

Хотя.. тут мысля мелькнула - возможно можно через доп поля (куда занести categoryId) сделать..

Но это надо на свежую голову думать ;)

T
На сайте с 24.07.2008
Offline
112
#6

Ага, я тоже не рискую сегодня в базу лезть, но идея такая:

сейчас я залил все категории с помощью плагина в вп и нужный мне ID сохранил как мета данные для каждой записи (доп.поле).

Завтра залезу в mysql и запросом из этого доп.поля изменю id каждой категории. По идее должно сработать :)))

S
На сайте с 30.09.2016
Offline
459
#7
Tempter:
изменю id каждой категории. По идее должно сработать

Только не забудь, что id уникален, и нельзя записать значение id, если таковое уже существует.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
SV
На сайте с 03.11.2008
Offline
1395
#8
Tempter:
залезу в mysql и запросом из этого доп.поля изменю id каждой категории. По идее должно сработать

Это на 99,9% надёжный способ, чтобы поломать сайт :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий