Блог Евгения Попова :: Программы :: DataLife Engine

Полный гайд по миграции с CMS DLE на WordPress (копипаст, не проверен)


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

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

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

Установка WordPress

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

Для ссылки вида «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, переписать старые, давно потерявшие актуальность статьи и исправить все недочеты.

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


Источник + полная инфа по переносу
Перейти на сайт (скачивать файлы можно только на сайте)