Перенос базы данных с DLE на WordPress
Как я говорил в посте “О блоге” буду постить проблемы с которыми стыкался, так вот на днях решил перенести один из своих сайтов, вернее базу данных с сайта DLE на WordPress. Вам наверно интересно почему я затеял этот перенос? Дело в том что сайт стоял на Нулледе ( новенький потому посещаемости пока почти нет, но деньги в раскрутку уже вложил) и думал как только сайт заработает сам на себя то есть на лицензию, так и сразу куплю но тут подумал, заплати один раз 59$ а потом выйдет новая версия скрипта и плати еще 39$. А на сайте около 2 к статей и переливать всех времени лишнего как-бы и нету. Решил перелить только категории, посты, юзеров и комментарии короче говоря самое главное.
Так начинаем перенос базы данных с DLE на WordPress, для начала нам нужно сделать бекап БД и файлов (на всякий случай). Я перезаливал на Суб-домене не хотел чтобы сайт лежал, а на локалхосте вечно проблемы с кодировкой…
После того как сделали бекап заливаем на новый домен одну папку с бекапа файлов «uploads». В которой хранятся у нас картинки.
Далее устанавливаем WordPress, как установить описано в этом посте.
После установки WordPress нам нужно установить 2 плагина:
1)«wp-no-category-base» (он убирает с ссылки категорий);
2)«rus-to-lat» (для отображения URL красивыми англ. буквами);
Один из самых важных пунктов, как оставить все ссылки на статьи прежними важно для поисковых систем, нем же не нужны 404-тые ошибки… тогда (сделаем такие же как были на DLE).
Идем в Админку –> Постоянные ссылки —> и в “Произвольно” вставляем
/%category%/%post_id%-%postname%.html
Если у вас было по другому то нужно переделывать под себя. Ничего сложного нет.
Теперь через phpMyAdmin импортируем нашу старую базу данный в новую.
После чего переходим во вкладку SQL (тоже в phpmyadmin) и выполняем такой запрос:
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; 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, CONCAT(d_p.short_story, '' ,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;
Вот и все должно все работать.
Когда я делал эту процедуру первый раз то у меня была проблема с кодировкой место русских символов было такое . . slovo .
Если у вас возникла такая же проблема то нужно, перед тема как заливать нашу старую БД открыть ее с помощью Notepad++ и посмотреть кодировку (у меня была Asci). И перед загрузки этой БД в нашу новенькую котораяWordPress, нужно выбрать кодировку. Я выбрал windows-1251 и все отлично заработало.
Рад если кому-то помог:)
Перенос Dle на новый хостинг
Перенос CMS Dle на новый хостинг займет совсем немного времени, особенно, если у вас уже есть опыт установки движка из исходников. Первый шаг 一 загрузка файлов сайта на свой компьютер. Зайдите в “Диспетчер файлов” на старом хостинге и создайте архив с файлами, а затем загрузите его:
Здесь же найдите файл конфигурации (/engine/data/dbconfig.php:) и откройте его в режиме просмотра. В нем содержится информация о названии базы данных, которую нужно будет перенести на новый хост-аккаунт:
Теперь, зная название базы данных, откройте phpmyadmin найдите свою БД и нажмите “Экспорт”:
Перейдите на новый хостинг, чтобы загрузить на него архив с файлами:
Зайдите в “Базы данных MySQL” → создайте новую БД и пользователя, а затем объедините их:
Далее нужно импортировать базу данных в разделе phpmyadmin. Выберите нужную → кликните “Импорт” → загрузите БД, скачанную на старом хостинге:
Вернитесь в “Диспетчер файлов” и откройте файл конфигурации в режиме редактирования. Замените название базы данных, имя пользователя и пароль на новые:
Осталось зайти на веб-портал, чтобы удостовериться в том, что перенос был сделан правильно:
Также рекомендуем почитать:
Категории
- Блог
- Наши новости, акции, нововведения
- Руководства, статьи, инструкции
- Хостинг, домены, мировые новости, обзоры ПО
- Рейтинги, обзоры, отзывы
- Наши новости, акции, нововведения
- Руководства, статьи, инструкции
- Хостинг, домены, мировые новости, обзоры ПО
- Рейтинги, обзоры, отзывы
- RSS
Популярное в категории
- Новая услуга: VPS с выделенным накопителем
- Новая функция в cPanel: установка бесплатного SSL-сертификата от Let’s encrypt
- Авторизация через соцсети в Bitrix
- Создание простого и выпадающего меню на WordPress
- Cron в cPanel: запуск скрипта по расписанию
- Основы JavaScript. Урок 1. Введение в JavaScript. Что такое JavaScript.
- Что делать с ошибкой Strict Standards: Non-static method JLoader?
- Что лучше хостинг или vps?
- Где купить домен и хостинг?
- Инструкция по установке ISPmanager (последняя версия)
- SSL: понятие, суть, предназначение
- Добро пожаловать в наш блог!
Перенос сайта с DLE на WordPress 2023

Однажды, с сайтом одного из проектов, с которыми я работаю случилась неприятность – его взломали и удалили все файлы с хостинга. Сайт был создан на платформе 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” и устанавливаем этот плагин.
- Затем нам нужно убрать префикс “/category/” из URL и для этого подойдет плагин “No Category Base (WPML)“
- Или мы можем вместо него сразу установить отличный плагин для СЕО – “Yoast SEO“, который, помимо прочего, тоже обладает нужной нам функцией.
- Активируем оба плагина. Если ставили Yoast SEO, то заходим в раздел SEO -> Дополнительно -> Постоянные ссылки и в первом пункте ставим “Убрать”.
- Далее нам нужно сделать структуру ЧПУ (человекопонятных URL) такой же, как была в DLE. Для этого в консоли WordPress идем в Настройки -> Постоянные ссылки, выбираем “Произвольно” и вписываем /%category%/%post_id%-%postname%.html . Это приведет ссылки к такому виду, в каком они были на DLE. Опять же, может быть на вашем сайте DLE не было категорий в ссылках, тогда вам достаточно будет вписать /%post_id%-%postname%.html
- Теперь вам нужно найти и установить нужный вам шаблон (тему). Сделать это можно через Внешний вид -> Темы. Можно выбрать, установить и посмотреть темы из большого количества бесплатных тем, либо загружать свои шаблоны в виде zip архивов, которые вы найдете в интернете.
- Важно: не пытайтесь создавать на этом шаге новые посты и рубрики в WordPress, они все равно исчезнут на следующем шаге и будут заменены теми, которые были в DLE.
Первый шаг переноса сайта с DLE на WordPress завершен, осталась половина задачи.
Шаг второй: Миграция базы данных
Начну с того, что принцип хэширования паролей пользователей на движках отличается, поэтому пароли с DLE на WordPress не мигрируют вообще! Если у вас есть пользователи и открыта регистрация, то после переноса сайта, сделайте рассылку на E-Mail с просьбой восстановить свои пароли через кнопку “Забыли пароль”.
Дополнительные поля в записях (если они есть) не будут перенесены, поэтому если хотите их перенести, вам придется найти их в таблицах DLE, понять, где они должны быть в таблицах WP и изменить SQL код, который представлен ниже, чтобы он и их переносил куда следует.
А вообще это должно решиться заменой d_p.full_story в коде на CONCAT(d_p.full_story,d_p.xfields) .
Записи, созданные пользователем, который был потом удален, тоже могут быть не перенесены. Рекомендую сначала проверить, чтобы всем записям был указан какой-нибудь автор (существующий пользователь). Добавить автора всем записям, где его нет можно следующим SQL запросом:
UPDATE 'dle_post' SET author='ЛОГИН АВТОРА' WHERE author=''Теперь о SQL коде для миграции
Если вы зайдете в phpMyAdmin, вы увидите, что в базе данных есть таблицы, начинающиеся на “wp_” и на “dle_”. Если все так – значит вы нигде не ошиблись при установке WordPress.
Для нормальной работы сайта, мы хотим в автоматическом режиме перенести пользователей, категории, записи и комментарии в соответствующие таблицы WordPress.
Когда мне пришлось переносить сайт с 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:' 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;Теперь можно переносить посты. Тут я предложу 3 варианта:
Если на вашем сайте текст постов находится только в короткой версии (анонсе):
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.short_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_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_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, CONCAT(d_p.short_story, '' ,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;После выполнения этого кода, все ваши пользователи, посты, категории и комментарии будут копированы в WordPress. Теперь вы можете удалить таблицы с префиксом dle_ из базы данных и смело посмотреть работу сайта. Если пути к картинками в DLE были прописаны правильно, они должны будут отображаться, ведь папку uploads с картинками мы оставили. Вам останется только сделать основные настройки сайта (заголовок, описание, другие настройки в консоли WordPress) и конечно поработать с шаблоном, чтобы все было как вы хотите.
С помощью этого кода, я успешно в 2012 году перенес с DLE на WordPress сайт проекта Club-FL с ~2000 записями и более 3000 пользователями.
Конечно стоит отметить, что такой перенос никогда не пройдет без осечек. В зависимости от набора установленных у вас на DLE плагинов и дополнительных функций в постах, в их отображении могут быть проблемы. Например могут быть проблемы с цитатами BLOCKQUOTE, блоками PRE и CODE (если вы такие используете), а также со спойлерами и лишними тегами при отображении картинок.
Если после переноса вы обнаружили какие-то из перечисленных проблем, то некоторые из них можно решить следующим образом (спасибо сайту kinorossia.ru):
В phpMyAdmin выбираем таблицу wp_posts и экспортируем ее в файл. Рекомендую открыть этот файл не блокнотом, а нормальным текстовым редактором, например Notepad++. Учтите, что при большом размере дампа, редактор может подвиснуть. Просто дайте ему время на обработку файла.
Теперь нажимаем комбинацию [Ctrl]+[F] и в появившемся окне переключаемся на вкладку “Замена”.

Ниже будут описаны замены, которые необходимо выполнить. Когда заполните поля, нужно нажимать кнопку “Заменить все” и ждать окончания обработки. Редактор может зависнуть на некоторое время, если файл слишком большой.
- найти:
- найти: .png|—>
- найти: .gif|—>
- найти: и заменить на:
- найти: и заменить на: ;»>
- найти: и заменить на:
- найти: и заменить на:
- найти: и заменить на:
- найти: \» и заменить на: «
Теперь сохраните изменение в файле, вернитесь в phpMyAdmin, и выполните запрос:
SQL TRUNCATE wp_posts;Затем можно импортировать ваш измененный дамп.
И последнее, что бы я хотел сказать в этой статье. В отличие от DLE, в движке WordPress из коробки отсутствует функция плавного увеличения изображения по клику (технология Highslide). Однако добавить ее очень просто и это описано в этой статье.
UPD 2023: статья отредактирована и дополнена. Что касается SQL запросов, то есть вероятность, что спустя столько лет и обновлений как DLE, так и WordPress, что-то может уже не подходить, но у меня больше нету сайтов на DLE, чтобы проводить эксперименты, поэтому актуализировать эту информацию я не могу.
- Следующий пост OTRS Queues Notifier – оповещение о заявках
- Предыдущий пост Запуск нового сайта Alexell.Ru
—> Перенос данных с DLE на WordPress опубликовал Gennady категория Администрирование
просмотры 14 485
Ниже приведенный MYSQL код для миграции с cms DLE на WordPress, с его помощью со слов автора без проблем можно перенести категории, пользователей, посты и комментарии из ДЛЕ в Вордпресс.
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 ;
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 , CONCAT ( d_p . short_story , ‘‘ , 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 ;!--more-->
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 ;
Описание
Очистка таблиц, чтобы не сбить ID записей.
Перенос пользователей кроме admin. С паролями есть сложности из-за особенностей кодирования, не заостряем внимание т.к. можно воспользоваться восстановлением пароля.
Поля полной новости и анонса объединены в одно как в WordPress, с помощью CONCAT ( d_p . short_story , ‘ < ! -- — more — -- >’ , d_p . full_story ) .
