Теперь на Wordpress
SQL, wordpress Октябрь 4th, 2009
Переезд на wordpress завершен. Раньше блог работал на самодельной CMS-ке. После долгих раздумий все же решил обновиться, так как слишком много интересных штук нужно было делать самому. Заметил, что пишу уже всякое с 2004 года минимум… Восстановил все старые посты, поместил их в личный раздел. Но пост не об этом.
Сейчас расскажу, что делал. Алгоритм применим для любого переезда на wordpress :)
1. Создал две временные таблицы для постов и комментариев в той же базе, где будет работать wordpress. Заполнил их обычным экспортом в phpMyAdmin.
2. Обычным запросом типа INSERT INTO `wp_posts` SELECT FROM `temp` перенес записи в новую таблицу. Раньше у меня аннотация и текст записи были в разных полях таблицы. Объединял я их так:
UPDATE `wp_posts` SET post_content = (SELECT CONCAT_WS("<!--more-->", dscr, content) FROM temp WHERE alias = post_name)
В старой таблице post_name (slug записи) у меня именовался alias. Поскольку новые ID записей не совпадали со старыми, нужные данные приходится искать при помощи условия post_name = alias. Равенство вышло из условия оставить все адреса записей без изменения.
3. В настройках постоянных ссылок вписал адреса страниц: /%postname%.html. Как было ранее.
4. Установил плагин All in One SEO Pack. Раньше поля title, keywords и description были в той же таблице, что и посты. В wordpress чуть иначе. Плагин все хранит в таблице wp_postmeta с ключом вида «_aioseop*». Примерно так можно перенести все старые мета поля:
DELETE FROM `wp_postmeta` WHERE meta_key LIKE "_aioseop%"; INSERT INTO `wp_postmeta` (SELECT 0, (SELECT b.`ID` FROM `wp_posts` b WHERE b.post_name = c.alias LIMIT 1), "_aioseop_title", c.`title` FROM `temp` c); INSERT INTO `wp_postmeta` (SELECT 0, (SELECT b.`ID` FROM `wp_posts` b WHERE b.post_name = c.alias LIMIT 1), "_aioseop_description", c.`metaDescription` FROM `temp` c); INSERT INTO `wp_postmeta` (SELECT 0, (SELECT b.`ID` FROM `wp_posts` b WHERE b.post_name = c.alias LIMIT 1), "_aioseop_keywords", c.`metaKeywords` FROM `temp` c);
5. Аналогично перенес комментарии в новую таблицу wp_comments. Удалил разный мусор и выполнил запрос:
UPDATE `wp_posts` a SET comment_count = (SELECT COUNT(*) FROM `wp_comments` b WHERE b.comment_post_ID = a.id)
Теперь в списке постов видим корректное число комментариев.
6. Установил плагины Aksimet, WP-PageNavi, SyntaxHighlighter Evolved, Google XML Sitemaps, EwGenij :). Зарегистрировался в Gravatar.
7. По мелочам: поставил счетчик Google Analytics, исправил URL фида в FeedBurner.
Кажется, все работает именно так, как я и хотел.
PS. О содержимом плагина EwGenij я рассказываю в следующих заметках.
http://www.ewgenij.net/sort-wordpress-topics.html
http://www.ewgenij.net/google-analytics-2-js.html
PPS. Звиняйте, у кого в читалке старые записи заново загрузились :)
Tags: mysql, sql запросы
About