Хакаем плагин импорта для wordpress

·
Хакаем плагин импорта для wordpress

Понадобилось мне на днях заполнить один интернет-магазин товарами. Товаров больше тысячи, прайс-листы в excel. Естественно, решил, что буду делать пакетный импорт.

Есть на примете хороший плагин для этого: WP Ultimate CSV Importer Plugin — удобный интерфейс, хорошо продуманный механизм загрузки — по умолчанию стоит загрузка одной строки за запрос — долго, но надежно. Не нужно возиться с правильными названиями для колонок — плагин позволяет сам назначить каждой колонке тип контента — заголовок, или категория или формат.

Решил для текущей задачи данным плагином и воспользоваться.

Но учитывайте, что если вы при импорте не указываете дату поста, то по умолчанию дата почему-то выставляется 1 января 1970 года. То есть минимальный набор колонок для нормального импорта — название поста или страницы и дата.

Административный интерфейс на английском, выглядит вот так:

Скриншот 2015-02-18 07.05.51

В принципе, все понятно: импорт, экспорт, настройки. В настройках ничего до сих пор менять не пришлось.

Переходим во вкладку импорт и выбираем в выпадающем списке, что будем грузить: посты, страницы или другой тип записей. Плагин интернет-магазина woocommerce создает свой тип записей, системное имя которому «product». Выбираем файл с компьютера, загружаем:

Скриншот 2015-02-18 07.17.05

 

… и на следующей странице нам предлагают из выпадающего списка выбрать тип записей, а также статус будущих публикаций. Со статусом все понятно, а вот с типом записей получается так, что там нет такого типа как «product». Есть разные другие, а продуктов, получается нет(((.

Скриншот 2015-02-18 07.27.17

После небольшого исследования, я узнал о существованиии pro-версии плагина, которая как раз поддерживает импорт для различных e-commerce платформ и еще много чего. К слову, платная версия стоит 145$.

Дальнейшие размышления были примерно такие: «Да, woocommerce достаточно сложная система, в ней есть разные типы связей для каждого поста — вариации, атрибуты, типы продуктов, статусы заказов, типы цен и еще много чего. Естественно это все сложно реализовать, и естественно, что разработчик хочет денег за свою работу. Но ведь тип «product» уже существует в системе! Почему он тогда не отображается в выпадающем списке вместе с другими типами постов (плагин выдал даже такие, на мой взгляд, бесполезные для задач импорта посты, как «shop_refund» и «shop_webhook», хотя наверно они тоже участвуют в импорте при интеграции со сторонними системами типа 1C). Очевидно, что в плагине где-то выставлено ограничение по выводу типов постов, которое убирается в pro-версии. Соответственно, убрав данное ограничение, мы сможем увидеть в списке тип «product», а значит и импортировать в него записи.

Дальше идет массовый поиск по всем файлам плагина с помощь Total Commander и анализ полученных результатов. Виновник находился здесь: /modules/custompost/templates/index.php

Два раза в файле встречается вот такой код:

if (($value != 'featured_image') && ($value != 'attachment') && ($value != 'wpsc-product') && ($value != 'wpsc-product-file') && ($value != 'revision') && ($value != 'nav_menu_item') && ($value != 'post') && ($value != 'page') && ($value != 'wp-types-group') && ($value != 'wp-types-user-group') && ($value != 'product') && ($value != 'product_variation') && ($value != 'shop_order') && ($value != 'shop_coupon') && ($value != 'acf') && ($value != 'createdByCCTM') && ($value != 'createdByTypes')) {

как видим, тут описывается не только типы записей от woocommerce, но и от других плагинов — в частности Types. Убираем прямыми руками из данного условия те типы, которые нас интересуют, сохраняем и наблюдаем благотворные изменения в работе плагина. Кроме нужного типа данных добавляются также и соответствующие поля -product_cat, product_type и некоторые другие. Думаю, что, если поковыряться еще в плагине, то можно открыть для себя еще много премиум-возможностей.

Правда, вот поле для цены не появилось, видимо эта опция уже точно только в pro-версии встречается. Но моя задача импорта цен не предполагала, мне хватило вышеописанного небольшого хака. Назвать его нелегальной деятельностью нельзя, потому что плагин был взять из официального репозитория wordpress, что предполагает полное право всем желающим ковыряться в коде и менять его (на свой страх и риск).

 

 

 

Поделиться записью:
Picture of Агентство Romapad
Агентство Romapad
Работаем с 2009 года. Реализовано более 400 проектов. Слаженная команда профессионалов. Создание и администрирование сайтов. Техническая поддержка. Помощь новичкам.
Подпишитесь на рассылку новостей
Отправляя заявку, вы даете согласие на обработку персональных данных
Комментарии к публикациям
Похожие статьи
Прокрутить вверх
Оставьте Ваши контакты,
и мы с Вами свяжемся

Отправляя заявку, вы даете согласие на
обработку персональных данных
Заявка отправлена!
Ожидайте звонка менеджера.

Nullam quis risus eget urna mollis ornare vel eu leo. Aenean lacinia bibendum nulla sed 

Join our newsletter and get 20% discount
Promotion nulla vitae elit libero a pharetra augue