Как перенести посты с DLE на WordPress сохранив структуру?

Answered

Возникла необходимость переехать с DLE на WordPress! Преимущества: бесплатный движок, масштабируемый движок, постоянный апгрейд WP и т.д. Как сделать миграцию записей с DLE на WP, сохранив при этом ссылочную структуру записей и рубрик. В идеале конечно, перенести и всех пользователей!

Заранее благодарен за решение!

Add Comment
2 Answer(s)
Best answer

Установите чистый WordPress, а также плагины:

cyr-to-lat
wp-no-category-base

В настройках ЧПУ WordPress выберите режим "Произвольно" и пропишите код:

/%post_id%-%postname%.html

Так мы сохраним структуру записей DLE на новом сайте WordPress.

Объедините базы данных DLE и WordPress

Бекап базы DLE импортируем прямо в базу данных WordPress (ничего страшного, таблицы не покусаются у них разный префикс: DLE - "dle_", у WordPress "wp_" (если оставить по умолчанию).

Там же в 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;

Чистка базы и адаптация сайта

После успешного SQL запроса таблицы с префиксом dle_ можно удалить из базы (данные DLE сайта нам больше не понадобятся, они уже перенесены на новый сайт под управлением WP).

Можете открыть сайт и проверить основные узлы: записи, наличие рубрик и пользователей. Поскольку у DLE и WordPress разная система хранения паролей, на сайте WP они все будут сброшены - вам необходимо повесить объявление о необходимости сбросить пароли на прикрепленные адреса электронной почты (каждый пользователь, зная свой адрес электронной почты, сможет запросить новый пароль к своему аккаунту. Это можно сделать по ссылке:

ваш_сайт.ру/wp-login.php?action=lostpassword

Поздравляем, вы перенесли сайт с DLE на WordPress! На всю процедуру миграции (включая установку WordPress) у Вас уйдет минут 15-20!

ГУРУ Answered on 30.11.2020.
Add Comment

Не работает данный SQL запрос, выдаёт ошибку:

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;

Ответ MySQL: Документация


#1364 - Field 'post_excerpt' doesn't have a default value

Default Answered on 06.12.2021.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.