Перенос сайта с DLE на WordPressОднажды, с сайтом одного из проектов, с которыми я работаю случилась неприятность - его взломали и удалили все файлы с хостинга. Сайт был создан на платформе Data Life Engine (DLE), разумеется, на ломаной (nulled) версии. Полагаю, нас взломали сами авторы движка. Бекапы конечно у нас были и тогда я понял, что в движке полно уязвимостей и пора выполнить перенос сайта с DLE на WordPress. О том, как это сделать, я хочу рассказать вам в этой статье. В интернете есть несколько статей на эту тему, однако в них описано не все и код для переноса не полностью переносит все, что нужно для полноценной работы, содержит косяк с переносом анонсов, да и плагины WordPress там указаны устаревшие.

Шаг первый: бекап и установка WordPress

Для начала, рекомендую сделать бэкап базы данных DLE и его файлов. Затем посмотрите настройки подключения к БД в файле engine\data\dbconfig.php. Нас интересует DBNAME, DBUSER и DBPASS - скопируйте их куда-нибудь. Теперь нужно выполнить несколько простых действий:

  • Удаляем все файлы с корня сайта, кроме папки uploads и всех, созданных вами папок и файлов в корне, если такие есть.
  • Скачиваем WordPress
  • Распаковываем файлы движка в корень сайта. Все файлы и папки, начинающиеся на "wp-", должны оказаться в корневой папке сайта, где от DLE осталась только папка uploads.
  • Заходим на сайт в браузере, появится страница установки WordPress, при установке укажите параметры подключения к той же БД, где остались данные DLE (параметры подключения мы копировали).
  • После успешной установки, авторизуемся в админке
    • В разделе плагины нажимаем "Добавить новый", в поиске в углу вводим "Cyr to Lat enhanced" и устанавливаем этот плагин.
    • Затем ищем и устанавливаем "Yoast SEO" - отличный плагин для СЕО, он вам обязательно будет полезен, но на начальном этапе нужен он нам для другого.
    • Активируем оба плагина, заходим в раздел SEO -> Дополнительно -> Постоянные ссылки и в первом пункте ставим "Убрать". Это уберет стандартный префикс "/category/", который добавляется во все URL
    • Далее в консоли WordPress идем в Настройки -> Постоянные ссылки, выбираем "Произвольно" и вписываем "/%category%/%post_id%-%postname%.html". Это приведет ссылки к такому виду, в каком они были на DLE.
    • Теперь вам нужно найти и установить нужный вам шаблон (тему). Сделать это можно через Внешний вид -> Темы. Можно загружать свои шаблоны, которые вы найдете в интернете.
    • Важно: не пытайтесь создавать новые посты и рубрики в WordPress, они все равно исчезнут на следующем шаге и будут заменены теми, которые были в DLE.

Первый шаг переноса сайта с DLE на WordPress завершен, осталась половина задачи.

Шаг второй: Миграция базы данных

Начну с того, что принцип хэширования паролей пользователей на движках отличается, поэтому пароли с DLE на WordPress не мигрируют вообще! Если у вас есть пользователи и открыта регистрация, то после переноса сайта, сделайте рассылку на E-Mail с просьбой восстановить свои пароли через кнопку "Забыли пароль".

Дополнительные поля в записях (если они есть) не будут перенесены, поэтому если хотите их перенести, вам придется найти их в таблицах DLE, понять, где они должны быть в таблицах WP и изменить SQL код, который представлен ниже, чтобы он и их переносил куда следует.

А вообще это должно решиться заменой d_p.full_story в коде на CONCAT(d_p.full_story,d_p.xfields).

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

Теперь о SQL коде для миграции

Если вы зайдете в phpMyAdmin, вы увидите, что в базе данных есть таблицы, начинающиеся на "wp_" и на "dle_". Если все так - значит вы нигде не ошиблись при установке WordPress.

Для нормальной работы сайта, мы хотим в автоматическом режиме перенести пользователей, категории, записи и комментарии в соответствующие таблицы WordPress.

Я читал другие статьи на эту тему и понял, что везде дают один и тот же код для миграции БД, однако этот код имеет существенные недостатки:

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

При переносе сайта c DLE на WordPress, я доработал этот код, теперь он переносит данные пользователей, добавляет аттрибуты прав и не переносит анонсы записей. Но если вам все же нужно объединить обе версии каждой записи, то найдите в SQL коде "d_p.full_story" и замените на "CONCAT(d_p.short_story, '<!--more-->' ,d_p.full_story".

Внимание: если на вашем сайте DLE большое количество записей, рекомендую выполнять этот код не в phpMyAdmin, а через десктопный софт для удаленного подключения к БД, например бесплатный HeidiSQL.

В phpMyAdmin выбираем нашу базу данных, переходим на вкладку "SQL" и вставляем в поле этот код:

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

С помощью этого кода, я успешно в 2012 году перенес с DLE на WordPress сайт проекта Club-FL с ~2000 записями и более 3000 пользователями.

Оставить комментарий

Оставьте комментарий первым!

Уведомлять
avatar
wpDiscuz