logo

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

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

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

Причин переезда с DLE на WordPress на самом деле достаточно. Начиная от несовершенства CMS DataLife Engine, заканчивая его платной лицензией. В свое время сотрудники «Softnews Media Group» регулярно атаковали почту хостинг провайдера с требованием заблокировать ресурс. Несколько раз даже переезжал к более «абузоустойчивому» хостеру.

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

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

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

Шаг 1 — установка WordPress

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

Шаг 2 — настройка WordPress

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

  • Плагин «RUS-TO-LAT». Если заголовок у статьи на русском, то DLE по умолчанию переделает его в латиницу и сделает из этого URL страницы. WP так делать не умеет и будет сохранять оригинальный заголовок в URL
  • Плагин «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 и ведет собственную сортировку.

Увеличение картинок в модальном окне

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

Написал свое очень простое решение на базе ядра Highslide.js

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


WordPress: плавное увеличение изображений на Higslide
Очень простой плагин плавного увеличения изображений, который я написал себе для CMS WordPress. Плагин создавался для замены имеющихся решений, которые...
PHP — простой ротатор баннеров, ротатор для DLE и WordPress
Аналог на javascriptАналог на PHP для больших кодов Очень простой ротатор кода на PHP. Сначала мы объявляем простой двумерный массив...
Как изменить пароль пользователя CMS DLE и WordPress через SQL-запрос
Перебираю старые статьи с целью их оптимизации и наткнулся на эту. В принципе, способ подойдет для любой системы на любом...
Особенности и возможности современных шаблонов для CMS WordPress
CMS WordPress — это мощная система с безграничными возможностями кастомизации шаблона и настройки функционала. На этом движке можно создать проект...
JS — скрыть внешние ссылки на сайте
Очень простой скрипт для скрытия внешних ссылок на любом сайте. Разрабатывался для CMS WordPress, но будет работать абсолютно везде. Полностью...

Комментарии

  1. @Pavlospul пишет:

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

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

    • @devarts пишет:

      Удалить что?

  2. @Артем пишет:

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

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

    • @devarts пишет:

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

  3. @Ulvi пишет:

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

    • @devarts пишет:

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

  4. @Василий пишет:

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

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

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

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

  6. […] Первоначально проще всего отфильтровать страницы по коду ответа сервера. Все что выше 200 — должно проверяться. Код 301 — в моем случае редирект со старых категорий при переезде с CMS DLE. […]

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