WP All Import. Эпизод 3. Импорт из XML- и YML-файлов простых и вариативных товаров

Артем Абрамович

Меня зовут Артем Абрамович и я являюсь фрилансером-вордпресером. Занимаюсь настройкой и редактированием сайтов созданных на CMS WordPress. Это основная моя специализация, есть еще несколько работ, которыми я занимаюсь, но обо этом вы можете более подробно узнать из моего портфолио.

103 комментария к “WP All Import. Эпизод 3. Импорт из XML- и YML-файлов простых и вариативных товаров”

  1. с точки зрения поисковой системы пачки очень похожих товаров даже лучше чем один вариативный — много трафика на каждый товар сразу пойдет.

    Ответить
  2. Вы сделали очень большую работу!!! Спасибо большое, очень помогли!!! СПАСИБО!!!!

    Ответить
  3. Спасибо за материал. Что Вы можете сказать о плагине WP Imp Exp? В бесплатной версии нет полноценной интеграции с Woocommerce, но в то же время, в платной заявлено больше возможностей и она значительно дешевле.

    Ответить
    • Ничего не могу. Что за плагин? Ссылку скиньте, если не сложно

      Ответить
    • ​@Финты WordPress Он (точнее его бесплатная версия) есть в меню плагинов Вордпресса под названием WP Import Export Lite, в описании плагина есть ссылка на сайт и на тестовую страницу полной версии с поддержкой Woocommerce. Не знаю в чём прикол, но ответ с ссылкой в этом комментарии не публикуется

      Ответить
    • Похоже это конкурент WPAI появился. Больно похож по описанию

      Ответить
  4. Как же вы вовремя с этим видео!)
    Всё равно ещё мучаюсь с импортом до сих пор но после просмотра стало всё намного понятнее)
    Спасибо, за код отдельное)!

    Ответить
  5. Хорошее видео. Коротко и ясно, для меня только не понятно: если вариация в одну строку через запятую пример размер (45-48, 50-56, 58-60) как разбить по размерам чтобы был выбор?

    Ответить
    • Тут смотреть надо, как вообще офер приходит, может быть хватить явного указания атрибута с разбиением через разделитель

      Ответить
  6. Артём отличное руководство, бомба-ракета.
    Было бы супер когда запилишь видео, как выгружать карточки товаров с Custom fields (ACF) и мультиязычный (плагин WPML) (y)

    Ответить
  7. Артём, здравствуйте, есть задачка посложнее, только начал учить WP, задача с интернет магазином и по теме как рас. Очень хочу научиться делать финт ушами с товаром. в задаче есть API поставщика с помощью которого можно получить JSON структуру, можно ли при помощи All Import реализовать импорты продуктов? Так же хотелось бы узнать сколько обходится такая работа в денежном эквиваленте. PS: Спасибо вам огромное за ваши труды, очень во многом открылись глаза в правильном направлении!

    Ответить
    • Доброго! json — это в некотором роде аналог csv, текстовый формат. И All Impor его вроде понимает. Но надо проверять, никогда с подобным не сталкивался.
      По стоимости хз, такое обычно по времени трекают, а ставка у всех разная, от 5 баксов и в бесконечность

      Ответить
    • @Финты WordPress Не совсем правильно видимо объяснил, по документации json понимается, лично я не пробовал ибо затык у меня в другом, понимаю что пытаюсь найти решение по проще, чтобы моих знаний хватило, но может посоветуете как быть, Есть API и описание к нему, через Postman получается делать запросы и получать данные, получать прайс и id товаров, проблема в том что в прайсе не указаны description full и images товаров, приходиться генерировать прайс, потом с прайса фильтровать товары, после получать список id товаров и через запрос в несколько кусков получать по этим id данные описания, картинки, параметры цвета веса и так далее. По идее, нужно писать обработчик API с интеграцией обновления товаров через REST API WooComerce, но без знаний PHP там мне делать нечего, изучением займусь, но для решения этой задачи времени практически не осталось, по этому либо обратиться за помощью, например к Вам, либо я не оправдаю ожиданий друга, который дал мне возможность учиться на практике и живом проекте. Могу вам в принципе написать в TG, пообщаться более конкретнее с предложением. Много текста, простите =)

      Ответить
    • Эм, что-то не понял. Прайс тоже запросом получается? В виде файла?

      Ответить
    • @Финты WordPress Привет, да, все раком, могу написать в телегу? Так проще будет общаться думаю, если есть конечно время, я пока другим проектом занимаюсь, к магазину вернусь как закончу мучаться с нынешним =)

      Ответить
  8. А будет про обновление товаров по крону с помощью данного плагина?

    Ответить
  9. Здравствуйте, спасибо за видео. При просмотре возник вопрос. Может подскажете , если не трудно. Каким образом можно обновить alt у уже загруженных карточек товара с помощью данного плагина?

    Ответить
    • Доброго! Простыми способами наверное никак. ТОлько функцию написать для подмены. Хотя alt должен использовать для картинок а не для карточек товаров

      Ответить
    • @Финты WordPress да конечно я имел ввиду для картинок alt. Я думал вначале сделать это в 4 пункте поставить галочку обновить все картинки, но подозреваю , что таким образом залью все картинки карточек товаров , которые уже есть на хостинге.

      Ответить
    • Это картинки обновяться, альты наверное придется без WPAI добавлять, типа автоматически прописывать заголовок товара в альт. Плагин Rank Math так умеет

      Ответить
  10. Спасибо за видео. Возник вопрос а почему нельзя использовать поиск замену ID на Имя категорий а надо перечислять их в Mapping? Возможно ли использовать поиск замену по аналогии с [str_replace(«a», «b», {title[1]})] ?

    Ответить
    • Наверное можно. Только не понял что вы подменять собрались и как сравнивать?

      Ответить
  11. Спасибо за полезную информацию! Есть два вопроса: при импорте csv атрибуты не привязуются к товарам, то есть на вкладке атрибутов есть название и все значения, а на самых товарах в вкладке атрибуты или на карточках товаров ничего, может нужно как-то связать? А при импорте xml файлом прописала 800 параметров, вашим способом, типо Бренд {param[@name=»Бренд»]} и, после выгрузки, не в один атрибут значение не добавило. Буду рада любой помощи)

    Ответить
    • @Happy Driver Дак дело не в латинице а в ярлыке, то есть надо смотреть какой ярлык создан для атрибута не сайте и его использовать. Транскрипция может быть разной. Например, атрибут цвет, может быть в ярлыке как cvet так и color

      Ответить
    • @Финты WordPress я Вас уверяю, это всё сделано, ярлыки совпадают — не подтягивает, перепробовал уже всё на что фантазии хватило

      Ответить
    • @Happy Driver Ну хз тогда, это смотреть тогда надо, так сложно сказать что-то конкретное

      Ответить
    • /**
      * Позволяет получать данные из русских атрибутов {param[@name=»Цвет»]}
      *
      * @param $is_enabled
      *
      * @return bool
      */
      function roomble_is_xml_preprocess_enabled( $is_enabled ) {
      return false;
      }
      add_filter( ‘is_xml_preprocess_enabled’, ‘roomble_is_xml_preprocess_enabled’, 10, 1 );

      попробуйте данный код ставить в function.php
      мне помог

      Ответить
    • @Лиза Сущенко Лиза, спасибо Вам огромное, вы мне упростили работу на порядок, еще раз, премного благодарен, работает

      Ответить
  12. У меня не получилось, возможно код неправильно вставил((( Да и почему-то не все товары смог прогрузить. Где-то нет картинок, некоторых товаров нет совсем(

    Ответить
    • Проверьте исходный файл, может там данных нет, которые не загрузились

      Ответить
    • @Финты WordPress данные есть, проверил. Может сможете помочь? За вознаграждение конечно.

      Ответить
  13. Я склоняюсь к тому что с такими +- сложными xml файлами проще свой импорт написать. Потому что там где вручную нужно выставлять категории и атрибуты (параметры) — ну это я думаю капец как долго)

    Ответить
    • Зачем вручную, можно програмно подставлять. Хотя с категориями и атрибутами все равно придется повозиться

      Ответить
  14. Вариативный товар позволяет клиенту не нажимать лишних кнопок и спокойной душой купить товар, для простых же товаров надо еще настроить связанные товары

    Ответить
    • Ну где-то да, возможно вы и правы, но это довольно индивидуальная ситуация

      Ответить
  15. Всем привет.
    Может кто сталкивался с такой проблемой вариативных товаров?
    Получается сделать импорт полностью всех вариаций Цвет, Размер из YML-файлов, но проблема с остатками, Woocommerce почему-то берет за остаток только количество товара последней вариации, то есть к примеру есть товар с 4 разными цветами и 4 размерами, и у каждой вариации свое количество на остатке.
    При обновлении файла поставщиком одного размера нет в наличии, все обновляет отлично…
    НО если нет в наличии именно той вариации, которая указана в карточке товара последней то тогда Woocommerce ставит «Нет в наличии» на всю карточку товара.
    Поделитесь решением кто сталкивался с таким)

    Ответить
    • Следующую серию посмотрите. Там есть про. Ну и смотреть надо выгрузку, надо проверять что приходит как артикулы заходят и тд

      Ответить
  16. Подскажите есть , как сделать что бы товар показывал наличие?

    Ответить
  17. Спасибо за видео!!! Хочу спросить одно: Когда добавляешь категории в Taxonomies, Categories, Tags для создания карты категорий нужно все указывать ? У меня их в XML файле 900! Спасибо

    Ответить
    • Ну вообще да, но при таком количестве наверное уже сниппет какой то надо писать, что бы автоматом проверяло

      Ответить
  18. Видео хорошее, есть некоторые замечания. Например при импорте товаров, категории не нужно руками прописывать, все это делается через функцию. Ведь если товар грузится по ссылке, а не через файл и категории могут измениться, как определить какой товар в какую категорию, а так через функцию плагин автоматом распределит привязываясь по id. Также этот способ очень полезен если настроены обновления через крон.

    Ответить
  19. Здравствуйте спасибо за контент. Подскажите для csv это подойдет?

    Ответить
  20. Что то не работает у меня этот код. Плагин выдает ошибку ERROR: Call to undefined function «my_get_cat_slug «

    Ответить
    • Это означает что функция вызвана, но ее нет. Проверьте чт вы эту функцию добавили в раздел functions

      Ответить
  21. Ох сколько боли и страданий нам приносят эти криворукие маркетологи!

    Ответить
  22. Фигня получается. Если есть одинаковые названия дочерних категорий в разных родительских категориях, то их не создаёт, а обновляет. В итоге не хватает какой-то категории. Что делать?

    Ответить
    • Есть бесплатная версия, но там нет возможности вариативные товары импортировать

      Ответить
  23. Всем привет! Использую wp all import — интересует вопрос по импорту из xml, а точнее можно ли изменять категории и подкатегории при импорте.

    Исходные данные
    7536″>Школьные принадлежности
    Пеналы школьные
    Обучающие плакаты, коврики
    РучкиШкольные принадлежности
    Обучающие плакаты, коврики
    РучкиКанцелярия
    Пеналы школьные

    Ответить
    • Можно, обычно для этого карта категорий используется. В 4-ом вроде эпизоде показывал

      Ответить
  24. а я добавил вот так и все получилось в поле имя харрактеристики — {param[1]/@name} — в поле значение {param[1]} и все сгрупировалось и подтянулось.

    Ответить
  25. Здравствуйте. У меня в товарах есть атрибуты: бренд {brand[1]} и гарантия {warranty[1]} Их также через атрибуты добавлять нужно?

    И как быть с валютой? Есть параметр валюты его тоже в атрибуты или как то по другому заводить, чтобы магазин понял в какой валюте цена товара будет?

    И еще есть параметры обычной цены и оптовой цены , если с обычной ценой все понятно, то куда воткнуть оптовую и чтобы оно понимало как правильно ее внести в товар.

    Буду благодарен за ответы на вопросы.

    Ответить
    • Доброго!
      бренд — это атрибут
      гарантия — это просто информация, но тоже можно в атрибут заводить

      С валютой и оптовым прайсом уже сложнее, по умолчанию валюта магазина в настройках указывается и параметр currencyId не нужен, если цены в рублях указаны

      Оптовую цену никуда воткнуть не получиться, использвоать надо только одну цену

      Ответить
    • ​@Финты WordPress спасибо за ответ. Еще один момент всплыл. У нас в прайсе аж 600 категорий. Карту вручную делать не стали, думали пронесет. Но при импорте плагин начал создавать новые категории с именами categoryid и вгонять туда товары. В итоге у нас пояаились категории типа: 195, 1001, 600 и т.д. пришлось весь импорт сносить. Без подгона категорий вручную(сопоставляя іd и названия) никак не можно обойтись? Если интересно для ознакомления, то наш чудо прайс здесь: ua-club.com/export/070_com_ua/dealersprice-7.xml

      Ответить
    • Программно это можно сделать, но формально там тоже самое будет. Получаем список рубрик и сравниваем его с тем что приходит

      Ответить
  26. Поверхостно рассказываете, не понятно как картинку разместить для каждого объявления и поста, в какую папку положить изображения, чтобы после импорта, все картинки подхватились. Ну реально что за ввобные бесполезные…

    Ответить
  27. Здравствуйте. У меня появился вопрос по импорту категорий, пробовал метод, описанный в этом уроке, но у меня все категории разместились в ряд, не произошло разбивки на подкатегории. У меня, правда код, описывающий категории немного отличается, вот код:

    Аксессуары для фонарей
    Фонари
    Ножи
    Мультитулы
    Ножи в ножнах ….. и т.д.

    Как в таком случае правильно импортировать категории? Категорий много, более 630 штук, я замахаюсь их руками подгонять каждый раз при обновлении импорта.

    И еще момент. В поле Title & Description в видео Вы прописываете название категории так: {.} , а на Вашем сайте в этом же поле прописано: {title[1]}. Вопрос, и так и так верно или это не принципиально, оба кода одинаково работают?

    Вот еще и ссылка на сам файл для наглядности: ua-club.com/export/070_com_ua/dealersprice-7.xml

    Ответить
    • Доброго! Ради интереса попробовал завести категории, все заводиться без проблем с вложениями как положено http://snap.ashampoo.com/H6HwPIHk1y3DnJQU329LmfjaZxeyoupwRxnCAvM3oIa4SQROmr2ywEyr56kLRZCe

      Апдейт товаров — это уже другая история. При импорте товаров можно проверять по id категории которое сохранили при импорте категорий, но проще карту руками один раз собрать

      Ответить
    • @Финты WordPress Спасибо за ответ. Вылез новый фокус. Импортирует всего по 1картинке. В параметрах изображения раньше указывал всего раз {picture[1]} и все было хорошо, но удалили все товары и попробовали запустить импорт по-новой и все пошло как то не так.

      Ответить
  28. Интересно, как работает маппинг товаров при такой структуре категорий, в которой два одинаковых названия на нижних уровнях иерархии ( категория «Мужское» содержит «Бельё» и категория «Женское» тоже ). Скорее всего все товары уйдут в одну категорию. Может в маппинге есть какие-то уточняющие параметры?

    Ответить
    • Можно ярлыки указывать, они разные должны быть, даже если названия одинаковые

      Ответить
  29. Согласен, что в yml сложно парсятся категории. Надёжнее все-таки сделать выгрузку товаров со значением категории типа «Мужское -> Бельё», а потом воспользоваться соответствующей опцией wp all import для построения иерархии. Это поможет избежать ошибки из моего предыдущего комментария.

    По идее yml из примеров были сформированы в условном 1С. Если есть возможность, то нужно подгонять под свой формат.

    Если нет, то, получается, через такой маппинг. Не работал с ним, даже не знаю как в такой ситуации можно организовать его надёжно. Может при выгрузке категорий закинуть мета термы, а потом связываться с ними через функцию. Или что-нибудь подобное.

    Ответить
    • Ну да, писать в мету термы, потом при импорте оттуда подтягивать

      Ответить
  30. Не работает, все категории цифрами. А еще я заметил что у вас при вводе в поле In Your File текста {categoryId[1]} потом {categoryId[1]} меняется на цифру у меня не меняется и так и остается на всех полях {categoryId[1]}

    Ответить
  31. Видео супер. Но возник вопрос по атрибутам. Прописываю атрибут, к примеру: «товар» и также в ячейке {param[@name=»товар»]}, после импорта в атрибутах ничего нет. Если прописываю {param[5]}, тогда все норм. У каждого товара около 20 атрибутов и все рандомные . Файл XML точно копия Вашего.

    Ответить
    • А в исходном файле точно есть атрибут с названием Товар? {param[@name=»товар»]} будет работать только если там есть такой параметр, иначе ничего не найде

      Ответить
    • ​@Финты WordPress а лучше в атрибутах указывать следующим образом
      Название первого атрибута — {param[1]/@name} — значение — {param[1]}
      Название первого атрибута — {param[2]/@name} — значение — {param[2]}
      Тогда всё будет соответсвовать

      Ответить
    • и так не работает. ставит один атрибут товару pa_8745 рандомные цифры.

      Ответить
  32. а как управлять остатками, когда наличие товара available=»true» — если есть в наличии
    если нет в наличии то available=»» ?

    Ответить
    • Придется функцию писать которая этот параметр проверяет. Других способов не знаю

      Ответить
  33. а как сделать определение наличия если вот так:
    наличие товара available=»true» — если есть в наличии
    если нет в наличии то available=»»

    Ответить
  34. Насчет атрибутов. Делаю как у вас на видео. Названия атрибутов грузятся, а их значения нет. Атрибутов много, все однотипные.

    Вот типичный — атрибут в табличке справа (который определился из фида): Взрослый, вот это ввожу слева (для импорта): {param[@name»Возраст»]}. В итоге значение «Взрослый» не импортится, не проходит.

    Вначале думал, что кириллица не проходит. Проверил таким образом — поставил слева вот такое: {param/@name}. Все значения атрибутов прошли, все прикрепились к одному атрибуту таким вот образом: Возраст, Пол, Размерный ряд, Сезон, Стелька, Тип каблука, Цвет. То есть, кириллица не при чем, дело в синтаксисе. Это конечно хорошо, но проблема не решается.

    Я уже весь интернет перелопатил. Не пойму как еще можно видоизменить это выражение {param[@name»Возраст»]}, чтобы оно пропустило значение «Возраст». Что только не менял в выражении, кажется все возможные и невозможные варианты синтаксиса перепробовал. Не проходит… Подскажите, пожалуйста, в какую сторону рыть. Хоть примерно. Нанять программиста пока не вариант.

    Еще. Вот исходная строка непосредственно из файла xml: . Может проблема в CDATA ? Но там для всех значений прикручен этот контейнер. И все они без проблем импортятся. А вот с этим param прям беда.

    Спасибо.

    Ответить
    • Именно так {param[@name»Возраст»]} указываете? Если да, то это работать не будет. Надо так {param[@name=»Возраст»]}

      Ответить
  35. всё понятно, но такой вопрос, здесь создаёт родительские категории которые указаны в файле импорта, а как мне сделать что бы эти родительские заходили в уже созданные мною вручную родительские и тем самым становились дочерними?
    То есть у меня есть свои родительские категории, и что бы импорт не создавал новые родительские, а попросту импортировал их в мои как дочерние со всей цепочкой к ним.

    Ответить
    • Не пробовал так делать, скорее всего вручную указывать в настройках импорта родителей

      Ответить
    • И так, я долго и упорно всё читал и перепробовал кучу способов, НО решение очень простое и я даже не смотрел на него, так как считал что так точно не будет работать — и собственно !РЕШЕНИЕ! — 1) просмотреть 1,2,3 эпизод, это для того что бы понимать о чём речь вообще. 2) при импорте категорий, что бы они залетали в ваши родительские (эпизод 3 в данном видео, я пока так и не разобрался, но! 3) Импортируем категории, после чего вручную в родительских импортированных категориях указываем им родительскую вашу, соответственно все которые за ней дочерние пойдут за ней.(категории-изменить(на нужной категории) — Родительская категория(выбираете)- сохраняете) 4) далее заходим в ваш импорт товаров и выбираем ваш импорт, в импорте в разделе Таксономии и категории — Категории товаров (ставим галочку) — Товары имеют иерархическую структуру (ставим галочку) — Вручную разработать иерархию (ставим галочку) и указываем названия по нужной вам структуре, например 1) Детские товары — игрушки — мягкие игрушки ( сдвигая ползунки, как лесенка получится) и тогда товары залетают в ваши родительские. Другого решения пока нет, что бы категории сразу при импорте залетали в нужные вам, над этим я пока работаю и ищу решение … Самое важное что бы у вас всё было как по видео, я имею введу карта категорий создаётся по любому, иначе работать не будет! Как сказал автор видео, один раз создадите и сохраните шаблон импорта и будет вам счастье!

      Ответить
    • @Финты WordPress подскажи те, как указывать и где? Я указывал тут «Создание иерархии вручную с помощью перетаскивания» но тогда во всех категориях создаёт одно и тоже, хотя я там прописывал всё по структуре. Проблема в том что теперь оно заводит родительскую в мою нужную родительскую, но при этом не завод согласно названия, например шапки в шапки, оно просто во все категории кидает все товары, и того они попросту во всех одинаковые.

      Ответить
  36. Блин. Вы прям спаситель. Уже который день мучался с этим yml и категориями только в начале xml-файла а тут на те. Готовое решение да еще и с примерами, как правильно и как неправильно. Спасибо!

    Ответить
  37. Еще вопрос. Можно ли сразу при импорте категорий указать все импортируемым категориям, главную, родительскую категорию?

    Ответить
  38. Спасибо за видео. Но у меня проблема с изображениями, они не добавляются в товар и все товары без изображений оказываются.

    Ответить
  39. Спасибо, помогли!
    Но добавлю для категорий и обычных товаров: из минусов, приходится уникализировать, иначе категории с одинаковыми названиями, но разными айди не добавляет (в принципе в екселе 5 минут работы)
    И мэппинг не нужен. Для товара в одной категории ставим [my_get_cat_slug({categoryId[1]}, «false»)] и галочку на Try to match terms to existing child Категории товаров
    Тестовый запуск получился, товары добавились в нужные категории

    Ответить
  40. {param[@name=»Формат»]} — не работаем у меня вот так. не «видит» оно по {param[@name=»ххх»]} параметр. Не подскажете, что может быть?

    Ответить
    • Странно что не видит. Уже десятки импортов провел таким образом. А узел точно param?

      Ответить
  41. Спасибо конечно за труды. Чот у меня этот способ так и не заработал. Для тех у кого так же проблемы с импортом подкатегорий есть изящное решение, без танцев с бубнами. Создайте ручками нужную иерархию. Сделайте экспорт. Изучите файл. И будет вам счастье! Все на ура залетает с нужной иерархией!

    Ответить
  42. Большое спасибо за подробный рассказ. Функция определения категории хорошо работает и принцип действия понятен. Возникла практическая задача: в одну категорию нашего сайта надо поместить товары, которые в XML-файле прописаны в разные категории (у них разные ID категорий). На нашем сайте у существующей категории в одном поле product_category_import_id сохраняем несколько значений через запятую. Функция должна перебрать все значения, если есть нужное — прикрепить товар к этой категории. Как правильно при загрузке товаров прописать перебор всех значений в каждом поле product_category_import_id ?

    Ответить

Добавить комментарий

%d такие блоггеры, как: