Перенос БД С CMS DLE на Word Press

От автора блога: Недавно у меня возникла необходимость перенести базу данных с двух проектов, созданных с помощью CMS Datalife Engine на CMS WordPress. Материал о том, как сделать такой перенос. Статьи об этом доступны на многих сайтах, поэтому, нет смысла их как-то менять. Выкладываю, как есть там, где и нашел. 

На днях решил перенести один из своих сайтов, вернее базу данных с сайта DLE на WordPress. Вам наверно интересно почему я затеял этот перенос? Получил целых два письма с текстом «Предсудебное уведомление» от компании СофтНьюс Медиа Групп (все дело в том что я использовал нелегальную копию DLE). 

Так начинаем перенос базы данных с DLE на WordPress, для начала нам нужно сделать бэкап БД и файлов (на всякий случай). 

Для отображения картинок вам нужно со старого движка перезалить папку uploads прямо в корень нового движка. Установите в wp-content свой шаблон и наслаждаемся бесплатным движком WordPress. В БД данных пока не удаляйте данные и можете поставив старый движок на поддомен и смотреть, что вам необходимо перенести в ручную какие-либо скрипты.

Далее устанавливаем WordPress, как установить описано в этом посте.

После установки WordPress нам нужно установить 2 плагина:

1)«wp-no-category-base» убирает ссылки «/category/»;

2)«rus-to-lat» переводит URl с кириллицы на латиницу;

Один из самых важных пунктов состоит в том, что необходимо оставить все ссылки на статьи прежними. Это важно для поисковых систем, которые, не увидев статей, сразу "уронят" сайт в выдаче… Сделаем такие же ссылки, как были на DLE.

Идем в Админку –> Постоянные ссылки —> и в “Произвольно” вставляем

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

Опишу:

/категория/id поста-название_поста.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, '<!--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;

Если на сайте были дополнительные поля - то запрос придется подправить. 

Вот и все должно все работать.

Когда я делал эту процедуру первый раз то у меня была проблема с кодировкой место русских символов было такое ????? ???????????? slovo ?????.


Если у вас возникла такая же проблема то нужно, перед тема как заливать нашу старую БД открыть ее с помощью Notepad++ и посмотреть кодировку (у меня была Asci). И перед загрузки этой БД в нашу новенькую БД, нужно выбрать кодировку. 

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

От автора блога: "косяки", все-таки были. Во-первых, доп.поля надо передавать в значении TRUNCATE wp_posts; ‘ ,d_p.full_story, d_p.xfields. Категории нужно подтвердить после переноса (обновить новость, любую). Иногда требуется отдельно перенести поле с автором. Картинки под пользователем root сохранять в WP нельзя. Анонсы переносятся вместе со статьями, так как это - два поля. Тут уже ручками надо переставлять. 

К слову, несложная веб-разработка хорошо стимулирует, дисциплинирует, ставит на место "мозги" и освежает знания. Лучше, конечно, если этот процесс оплачивается заказчиком, тогда и работа идет веселее...

ИСТОЧНИК (один из...)

Версия для печатиВерсия для печати
  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 2
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Piton

Гм, к чему бы этот пост? Трошин увел базу Итквариата и теперь хочет запилить на ее основе свой сайт?

Piton пишет:

Гм, к чему бы этот пост? Трошин увел базу Итквариата и теперь хочет запилить на ее основе свой сайт?

Может, как-то не будем с фамилиями играть лишний раз? Так свербит?

+1
Аватар пользователя Piton

Petro42 пишет:

Может, как-то не будем с фамилиями играть лишний раз?

А в чем проблема? Я неправильно ее написал? Или вы ее сменили?

Так свербит?

Что свербит? У кого свербит? Вы бы выражались яснее.

+1
Аватар пользователя mike

Трошин увёл...

Питон пытается оклеветать человека? За такое бьют не только морально. Но Питон имхо настолько трус, что даже профиль не заполнил. Что, впрочем, не мешает ему полоскать другие фамилии.

-1

Что свербит? У кого свербит? Вы бы выражались яснее.

Временный ступпор? У вас свербит, много лишнего пишете.

А в чем проблема? Я неправильно ее написал? Или вы ее сменили?

Надеюсь, в контексте блога, где ее нет, она упоминается Вами в последний раз. Вы то своей фамилии не упоминаете (не хочу даже предполагать, по каким причинам), и с чужими будьте, как можно деликатнее, мне неприятно.

 

-2