Экспорт постов из Wordpress через базу данных
Миграция постов из Wordpress на другой движок
Допустим, целевая таблица БД имеет следующую схему:
- news-schema.sql
CREATE TABLE `news` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `post_id` INT(11) UNSIGNED NOT NULL, -- связка с оригинальной записью, возможно, что потребуется `idate` INT(11) UNSIGNED NOT NULL DEFAULT '0', -- время в формате UNIX `name` CHAR(255) NOT NULL DEFAULT '', -- заголовок новости `href` CHAR(255) NOT NULL DEFAULT '', -- ссылка `announce` TEXT NOT NULL, -- анонс `text` TEXT NOT NULL, -- текст `is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', -- активность `picture` VARCHAR(255) NOT NULL DEFAULT '', -- картинка `meta_title` VARCHAR(512) NOT NULL DEFAULT '', -- SEO title `meta_keywords` VARCHAR(512) NOT NULL DEFAULT '', -- SEO keywords `meta_description` VARCHAR(1024) NOT NULL DEFAULT '', -- SEO description PRIMARY KEY (`id`) ) ENGINE=INNODB;
Тогда запрос для миграции из другой БД src_db
выглядит так:
- news-migration.sql
INSERT INTO `news` (`post_id`, `idate`, `name`, `href`, `announce`, `text`, `is_active`) SELECT `id`, UNIX_TIMESTAMP(`post_date`), `post_title`, `post_name`, IF(POSITION('<!--more-->' IN `post_content`) = 0, '', SUBSTRING_INDEX(`post_content`, '<!--more-->', 1)), IF(POSITION('<!--more-->' IN `post_content`) = 0, `post_content`, SUBSTRING_INDEX(`post_content`, '<!--more-->', -1)), 1 FROM src_db.wp_posts WHERE `post_status` = 'publish' AND `post_type` = 'post';
Прописывание мета-тегов:
- news-migration-meta.sql
UPDATE `news` JOIN src_db.wp_postmeta ON wp_postmeta.post_id = news.post_id AND wp_postmeta.meta_key = '_aioseop_description' SET `meta_description` = wp_postmeta.meta_value; UPDATE `news` JOIN src_db.wp_postmeta ON wp_postmeta.post_id = news.post_id AND wp_postmeta.meta_key = '_aioseop_keywords' SET `meta_keywords` = wp_postmeta.meta_value; UPDATE `news` JOIN src_db.wp_postmeta ON wp_postmeta.post_id = news.post_id AND wp_postmeta.meta_key = '_aioseop_title' SET `meta_title` = wp_postmeta.meta_value;