Инструкции по переносу DLE на WordPress

Инструкции по переносу DLE на WordPress
Инструкции по переносу DLE на WordPress

1. Для начало нам нужно сделать бекап базы данных и файлов сайта, чтобы смело перейти к работе.
2. Теперь нам нужно удалить все файлы DLE из хостинга (кроме папки uploads).
3. Скачиваем последнюю версию WordPress и устанавливаем на том же домене, на том же базе данных.
4. Для начало нам нужно перенести пользователей, но тут есть одно примечание: пользователь с ID=1, то-есть, Админ не переносится и еще не переносятся пароли (тут всем придется просто восстановить пароли).
Для этого просто нужно из 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;

Примечание: Все запросы я написал на случай что прифекс у DLE была dle_ а у WordPress wp_.
5. Теперь можно переносить категории, то-есть, теперь они называются рубрики, для этого делаем запрос

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;

6. Теперь нам нужно переместить материалы (посты, новости как хотите назовите)

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, '<!—more—>' ,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;

Этим запросом и соединили краткую и полную новость, если вам нужно только полная новость (fullstory) то просто в этом коде найдите

CONCAT(d_p.short_story, '<!—more—>' ,d_p.full_story)

И замените на

d_p.full_story

7. Комментарии, это тоже очень важный момент и однозначно их тоже нужно переместить, вот запрос для переноса комментариев

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;

8. Если у вас установлен плагин All in one SEO то вы сможете так же перенести title-ы страниц, описания и ключевые слова.

INSERT INTO `wp_postmeta` (`post_id`, `meta_value`) SELECT `id`, `keywords` FROM `dle_post`;
UPDATE wp_postmeta set meta_key = '_aioseop_keywords' WHERE meta_key IS NULL;

INSERT INTO `wp_postmeta` (`post_id`, `meta_value`) SELECT `id`, `descr` FROM `dle_post`;
UPDATE wp_postmeta set meta_key = '_aioseop_description' WHERE meta_key IS NULL;

INSERT INTO `wp_postmeta` (`post_id`, `meta_value`) SELECT `id`, `metatitle` FROM `dle_post`;
UPDATE wp_postmeta set meta_key = '_aioseop_title' WHERE meta_key IS NULL;

UPDATE wp_postmeta SET meta_value = (SELECT title FROM dle_post WHERE id = post_id) WHERE meta_key = '_aioseop_title' AND meta_value = '';

9. Теперь из базы данных удаляем все таблицы с префиксом dle_, я оставил только

dle_category
dle_comments
dle_images
dle_static_files
dle_tags
dle_usergroups
dle_users

Зачем, честно говоря не знаю, но я не знаю что будет после их удаление и по этому и вас предупреждаю.
10. Теперь нужно перенести картинки, чтобы они правильно отображались. Для этого папку из DLE под названием uploads копируем в папку /wp-content/, в этой папке тоже есть папка с таким названием.
11. Скачиваем базу данных и открывает его с помощью NotePad++, открываем Поиск и замена и заменяем старые адреса картинок на новые (это очень просто, нужно просто немного мозгов).
12. Теперь осталась только изменить адреса страниц чтобы вы не потеряли свой трафик. Конкретно у меня в DLE была ЧПУ типа 2, то-есть, /категория/ID-имя материала.html. Для того чтобы получить такие же адреса в WordPress нам нужно для начало установить два плагина

Wp-no-category-base — Убирает ссылки типа   «/category/»
Rus-to-lat — Переводит URl на латинские символы

Потом войти в Консоль  — Параметры — Постоянные ссылки, поставить галочку произвольно и прописать

/%category%/%post_id%-%postname%.html

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

Полный код запроса

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, '<!--more-->' ,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;

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