Полный гайд по миграции с CMS DLE на WordPress

dle wordpress - Полный гайд по миграции с CMS DLE на WordPress

Данный сайт в апреле 2019 года полностью переехал на CMS WordPress и в июне, после завершения всех правок (а их было не мало) был перенесен в продакшн. До этого он всегда работал на CMS DLE.

Идея переезда грызла меня последние несколько лет. Но все не решался, поскольку смена движка — это всегда большой объем работы по «вылизыванию» последствий переезда.

Причины переезда с DLE на WordPress

На самом деле их более, чем достаточно. Начиная от несовершенства ДЛЕ, заканчивая его платной лицензией. В свое время сотрудники «Softnews Media Group» регулярно атаковали почту хостинг провайдера с требованием заблокировать ресурс.

Несколько раз переезжал к более «абузоустойчивому» хостеру. Со временем письма прекратились. Подозреваю, связано это с лояльным контентом (статьи по DLE и использованию устаревшей версии движка — решили оставить в покое).

Итого можно выделить несколько ключевых причин переноса движка:

  • На момент переноса уже активно использовал WP в других проектах и смысла использовать два логически похожих движка (статьи связаны по категориям) не было;
  • DLE — платный. Запуск нового проекта себе или третьему лицу потребует дополнительных расходов или бесконечных жалоб хостеру;
  • Расширяемость — плагины, особенность их установки (часто нужно править движок) и многое другое;

Подготовка CMS DLE и CMS WordPress к переезду

На самом деле все очень просто и займет не более 15 минут. Нашел в сети готовые решения, которые переносят базы без стороннего ПО идеально сохраняя структуру. Потребуется лишь несколько манипуляций с базами и копирование файлов картинок.

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

Не буду дублировать у себя текст с сайтов, чьи инструкции я использовал, лишь выпишу ключевые этапы, а ссылки укажу ниже.

Установка WordPress

  1. Делаем бекап базы DLE;
  2. Создаем новую базу данных, загружаем в нее бекап DLE;
  3. Устанавливаем сюда же WordPress (позже таблицы DLE можно будет удалить);
  4. Копируем папку с файлами /uploads/ в корень WP. Таким образом картинки будут подтягиваться по старым адресам, но не будут отображаться в библиотеке WP.

Настройка WordPress перед слиянием баз

Нужно установить два плагина и сделать одну правку бизнес-логики движка WP.

  • Плагин «rus-to-lat». DLE по умолчанию переводит кириллическое название статьи в адрес на латинице. WP из коробки так делать не умеет и будет сохранять кириллицу, что не есть хорошо.
  • Плагин «wp-no-category-base». WP принудительно проставляет директорию /category/ в адрес категорий статей. Данный плагин убирает это слово.
  • Структура ЧПУ. Важно перенести шаблон ЧПУ дабы не потерять позиции в поисковой выдаче. Настраивается в админке в разделе постоянных ссылок.

Стоит подробнее остановиться на последнем пункте с ЧПУ. В админке есть инструкция, запутаться сложно, но все же.

wp permalinks 620x409 - Полный гайд по миграции с CMS DLE на WordPress
Настройка постоянных ссылок — /wp-admin/options-permalink.php

Для ссылки вида «123-article-name.html» шаблон будет следующим: «/%post_id%%postname%.html». Обратите внимание: слеш в данном случае является строковым параметром, а знаки процентов указывают на начало и конец переменных.

Слияние баз данных DLE и WordPress

Процесс представляет из себя перенос значений полей DLE в аналогичные по логике WordPress. Выполняется в виде SQL запроса. Для этого необходимо зайти в PhpMyAdmin, выбрать эту самую базу и на вкладке SQL выполнить следующий запрос.

DELETE FROM `wp_users` WHERE `wp_users`.`ID` != 1;
INSERT INTO wp_users (ID, user_login, user_nicename, user_email, user_registered, display_name) SELECT user_id, name, name, email, FROM_UNIXTIME( reg_date ), name FROM dle_users WHERE user_id != 1;

INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT user_id, "first_name", fullname FROM dle_users;
INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT user_id, "description", info FROM dle_users;
INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT user_id, "admin_color", "fresh" FROM dle_users;
INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT user_id, "show_admin_bar_front", "false" FROM dle_users;
INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT user_id, "wp_capabilities", "a:1:{s:10:\"subscriber\";b:1;}" FROM dle_users;
INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT user_id, "wp_user_level", 0 FROM dle_users;

TRUNCATE `wp_terms`;
INSERT INTO `wp_terms` (`term_id`, `name`, `slug`) SELECT `id`, `name`, `alt_name` FROM `dle_category`;

TRUNCATE `wp_term_taxonomy`;
INSERT INTO `wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `description`, `parent`) SELECT `id`, `id`, `descr`, `parentid` FROM `dle_category`;
UPDATE `wp_term_taxonomy` SET `taxonomy`='category';

TRUNCATE `wp_term_relationships`;
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) SELECT id, category FROM dle_post;

TRUNCATE wp_posts;
INSERT INTO wp_posts (id, post_author, post_date, post_content, post_title, post_name) SELECT d_p.id, d_u.user_id, d_p.DATE, d_p.full_story, d_p.title, d_p.alt_name FROM dle_post AS d_p, dle_users AS d_u WHERE d_p.autor = d_u.name;

TRUNCATE `wp_comments`;
INSERT INTO wp_comments (comment_ID,comment_post_ID, comment_author, comment_author_email, comment_date, comment_content) SELECT id, post_id, autor, email, DATE, text FROM dle_comments;

Оригинальные статьи

Проблемы, которые пришлось исправлять

Их было не очень много, но в итоге решился на ручные правки каждой из статей. Параллельно решил убить трех зайцев: залить все картинки в структуру WP, переписать старые, давно потерявшие актуальность статьи и исправить все недочеты.

Криво переносится следующее

  • Цитаты BLOCKQUOTE сохраняют HTML обертку в редакторе;
  • Блоки типа PRE и CODE не поддаются редактированию вообще. Копировал данный текст с оригинального сайта;
  • Текст под катом SPOILER также остается в виде HTML кода и не разворачивается. Написал собственную альтернативу;
  • Тег NOLEECH, из плагина Dude Smart Leech, скрывающий внешние ссылки также не работает и остается видимым в текстах.

Плагин Folders для редактуры текстов

folders plugin 620x431 - Полный гайд по миграции с CMS DLE на WordPress
Плагин Folders для дополнительной сортировки записей WP

Начав редактуру почти 650 статей столкнулся с задачей их сортировки. Нужно было следующее: разбить тексты по категориям и приоритетам (партнерские, совсем кривые, прочее). Решение нашлось.

Плагин Folders не имеет никакого отношения к логике WP и ведет собственную сортировку.

Плагин Image Zoom для увеличения картинок

Еще одной проблемой оказалось отсутствие плавного увеличения картинок в модальном окне (технология Highslide), как это умеет делать DLE из коробки. Нашел отличное и очень простое решение — плагин Image Zoom.

Преимущества WordPress

Во-первых, это задел на будущее. Выше писал, что DLE платный и запуск на нем клиентского продукта потребует внесения в ценник стоимости лицензии ~ 3 тыс. рублей. На такой шаг мало кто готов идти.

Во-вторых, WP в разы превосходит DLE по расширяемости и гибкости. Плагины работают на API, т.е. не вносят правки в движок и весь свой код хранят в собственных папках специального раздела (wp-content/plugins/) их можно безопасно обновлять независимо от движка.

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

Еще можно выделить модуль WooCommerce для сборки на WP полноценного магазина и огромное сообщество, где можно найти ответ на самый странный вопрос по функционалу движка.

Похожие записи

Особенности выбора хостинга для CMS WordPress для блога или сайта
Есть три вида хостинга, которые ощутимо различаются по качественным и финансовым характеристикам. Все три подходят для WordPress, но не во...
ImbaChat – обзор и основные возможности бесплатного плагина онлайн чата для CMS WordPress
ImbaChat — это продвинутый онлайн чат для вордпресс, представленный в виде стороннего плагина с возможностью совершать аудио и видео звонки....
Итоги прошедшего 2020 года и планы на 2021
С большим опозданием и с целью запомнить для себя публикую в середине февраля. Точнее, наконец-то определился с планами на год....
Несколько советов по ускорению загрузки сайта на WordPress
CMS WordPress — самый популярный движок для сайтов в мире. Их используют везде: блоги, порталы, портфолио, коммерческие сайты, лендинги, визитки,...
Folders — плагин WordPress для создания отдельного независимого каталога для записей
Folders — плагин, который создает дополнительный катало для записей независимый от основного. Он органично вписывается в дизайн и никак не...

Комментарии

Бесполезно писать спамные сообщения. Все комментарии проверяются;
Можно оставлять ссылки (через <a href), если они несут полезную информацию или дополняют статью;

  1. @Pavlospul пишет:
    19.10.2019 в 13:36

    удалите,пожалуйста! .

    s.h.i.n.amin.sk.2.015@gmail.com

    • @devarts пишет:
      19.10.2019 в 16:53

      Удалить что?

  2. @Артем пишет:
    28.02.2021 в 14:38

    Ура, все заработало !!!!
    Спасибище, перетянул на WP новостник с 73 тысячами новостей за 30 минут

    Пришлось немного поправить SQL, но это того стоило !!!

    • @devarts пишет:
      28.02.2021 в 22:41

      Не за что. С новостником проще, специфической верстки статей нет.

  3. @Ulvi пишет:
    15.05.2021 в 22:52

    Я однажды пробовал перейти с DLE на WordPress, но файлы с uploads WordPress не видел. Как можно решить проблему автоматический (не добавляя файлы по одному)?

    • @devarts пишет:
      19.05.2021 в 11:04

      Это может быть ошибка в коде. Нужно разбирать на конкретном примере. Ибо банального слеша “/” полностью меняет адрес сайта

  4. @Василий пишет:
    30.01.2022 в 22:43

    Классная статья. Хочу переехать с DLE на wordpress, готов вам оплатить помощь в переезде

  5. @Евгений пишет:
    13.03.2022 в 21:25

    Здравствуйте!

    Подскажите пожалуйста.. а есть возможно переехать в обратную сторону с wordpress с на DataLife Engine…очень надо. В интернете ничего не нашёл.

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

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