От автора блога: Недавно у меня возникла необходимость перенести базу данных с двух проектов, созданных с помощью 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 нельзя. Анонсы переносятся вместе со статьями, так как это - два поля. Тут уже ручками надо переставлять.
К слову, несложная веб-разработка хорошо стимулирует, дисциплинирует, ставит на место "мозги" и освежает знания. Лучше, конечно, если этот процесс оплачивается заказчиком, тогда и работа идет веселее...
Комментарии
Гм, к чему бы этот пост? Трошин увел базу Итквариата и теперь хочет запилить на ее основе свой сайт?
Может, как-то не будем с фамилиями играть лишний раз? Так свербит?
А в чем проблема? Я неправильно ее написал? Или вы ее сменили?
Что свербит? У кого свербит? Вы бы выражались яснее.
Питон пытается оклеветать человека? За такое бьют не только морально. Но Питон имхо настолько трус, что даже профиль не заполнил. Что, впрочем, не мешает ему полоскать другие фамилии.
Временный ступпор? У вас свербит, много лишнего пишете.
Надеюсь, в контексте блога, где ее нет, она упоминается Вами в последний раз. Вы то своей фамилии не упоминаете (не хочу даже предполагать, по каким причинам), и с чужими будьте, как можно деликатнее, мне неприятно.