WordPress: Перенос данных из cms MaxSite

Перенос данных (необязательно данных) — дело муторное и неблагодарное. Идеально, если процесс переноса был бы максимально простой, автоматический и не требующий никаких действий от пользователя (меня). Я думал, что на MaxSite нет такого решения. В общем, я и не надеялся. Некоторое время назад решил погуглить плагины/расширения на предмет переноса данных с MaxSite куда-либо, и наткнулся на плагин Importer-from-maxsite от Сергея Захарченко.

Чисто теоретически, сложности в процессе переноса данных нет. Все данные лежат в таблицах. Перенос сводится к тому, нужно вытащить данные из одних таблиц c определенными колонками и перевести их в таблицы с другими колонками.

Нужные нам таблицы, отвечающие за данные в статьях в MaxSite/Wordpress очень схожи:

  • mso_page / wp_posts — содержит записи со статьями
  • mso_users / wp_users — содержит авторов статей, если автор один, то вообще не нужна особо
  • mso_category / wp_terms- содержит названия рубрик, которые назначены на статьи
  • mso_cat2obj / wp_term_relationships — содержит связь между рубрикой и статьей
  • mso_comments / wp_comments — содержит связь комментариев и статьи

Но все же я хотел, чтобы все сделалось за меня. Поэтому плагин Importer-from-maxsite просто спасение. Плагин делает практически 99% всего сам. Для его работы нужно сделать 3 вещи:

  1. поставить и активировать на сайт c MaxSite плагин export-api
  2. установить на сайт WordPress плагин Importer-from-maxsite
  3. перейти на страницу плагина в WordPress и ввести адрес сайта MaxSite. Сайт WordPress должен иметь возможность физически зайти на сайт на MaxSite

В общем, отрабатывает на ура, переносит статьи, категории, картинки.

Что у меня не получилось:

  • скрипт не обработал ссылки на файлы, и из-за этого оставляет ссылки в том виде, в каком они были
  • добавление картинок в медийную библиотеку WordPress как есть. Но это скорее проблема WordPress, а не скрипта. Потому что получить помойку из картинок из всех статей в одной папке, конечно, не очень идея.

Пришлось поправить в плагине основной файл importer-from-maxsite\app\class-importer.php. Удобно в любой части файла сделать var_dump и посмотреть на структуру самих данных и дописать свою логику уже походу.

Коротко, что я изменил в файле class-importer.php :

  1. поставил плагин Media Library Folders, который поможет создавать свою структуру папок в медиабиблиотеке.
    Большой плюс состоит в его функции синхронизации, когда он сам подхватывает содержимое внутри папок и сам добавляет его в базу медиаданных.
    Для картинок и файлов из статей создал отдельные папки и перенес все в них. Для картинок в функции import_post_images сделал копирование физическое с одной локальной папки в другую через copy. Для файлов тоже самое, только использовал копию функции import_post_images, где вместо выделения картинок
    preg_match_all( '@src="([^"]+)"@', $content, $images );
    использовал поиск по обрамленным ссылкам на файлы
    preg_match_all( '@\[dc\].*href="([^"]+)".*\[\/dc\]@', $content, $images );
  2. Метки, которые указаны к статьям, почему-то не захотели переносится, добавил выделенные строчки в плагин:

В общем, перенес данные быстро, по большей части, проблема была только в нестандартных статьях и оформлении. Во всем остальном, плагин Importer-from-maxsite от Сергея Захарченко просто пушка. Спасибо Сергею!

Оцените статью
В коробке инженера
Добавить комментарий

Нажимая на кнопку "Добавить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности

Введите буквы на русском языке : *

Reload Image

  1. Ц

    Ошибка 🙁
    мой_домен.ком/export_api/v1/categories недоступен

    Ответить
    1. Colee автор

      Вам надо установить на сайте с MaxSite плагин, которые сделает эти адреса доступными. Если плагин установили, но в браузере не отображается этот урл, то скорее всего идет блокировка либо через .htaccess либо на уровне самого движка

      Ответить