Created
October 12, 2015 19:33
-
-
Save mouson/15e6c7bb465076c8e349 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* ************************************************* | |
@Name: Lifetype to Wordpress | |
@description: | |
這是一個可以直接在主機上執行的轉換程式, | |
可以協助您將Lifetype中「指定的」部落格, | |
所有文章、類別、迴響、引用、我的連結, | |
轉換到Wordpress系統「指定的」部落格中。 | |
@Version: V1.10 | |
V1.10 加入可修改base網址 | |
V1.00 初始版本 | |
@Author: mouson (http://MrMo.cc/mouson) | |
ReadMe: | |
1. 轉換前需完全清空WP posts文章 & pages分頁 包含回收筒中不能有文章 | |
使用Wordpress清空所有文章,可能會發生手動清空好了,但系統中還存在草稿, | |
最好的方法是進到wordpress資料庫中,選擇Table posts將所有資料清除 | |
否則會發生錯誤,因為post id可能重複則無法匯入 | |
2. 避免連結類別名稱與文章類別名稱重複, | |
當連結類別名稱 與文章類別名稱重複時, | |
新增連結類別的部份會發生重複建立關聯問題。 | |
可能出現問題的名稱「一般」、「未分類」 | |
3. 注意文章類別名稱是否與Wordpress中已經存在之分類名稱重複, | |
重複時會發生無法匯入問題。 | |
會出現問題的名稱如「未分類」 | |
How to use: | |
1. 修改資料庫設定 建立一個可以同時存取wordpress及Lifetype資料庫的帳號 | |
2. 設定Lifetype資料庫名稱 | |
3. 設定Lifetype資料庫前綴 | |
4. 設定Lifetype要轉換的部落格id | |
5. 設定Wordpress資料庫名稱 | |
6. 設定Wordpress資料庫前綴 | |
7. 設定Wordpress要轉換的部落格id,若非mulitsite wordpress則保留''即可,若mu wp則設定id | |
8. 設定Wordpress文章發表作者id | |
9. 文章預設網址 http://url/post_id | |
10. 上傳至主機上,執行頁面 | |
************************************************ */ | |
/* ************************************************ | |
******************** Setting ******************* | |
*************************************************** */ | |
//========== Database Setting ========= | |
//1. 修改資料庫設定 建立一個可以同時存取wordpress及Lifetype資料庫的帳號 | |
$config['db_host'] = 'localhost'; | |
//Database User name | |
$config['db_username'] = 'username'; | |
//Database User password | |
$config['db_password'] = 'password'; | |
//========== Lifetype Setting ========= | |
//2. 設定Lifetype資料庫名稱 | |
//Lifetype Database name | |
$config['db_lt_dbname'] = 'lifetypedb'; | |
//3. 設定Lifetype資料庫前綴 | |
//Lifetype Database prefix | |
$config['db_lt_prefix'] = 'lt_'; | |
//4. 設定Lifetype要轉換的部落格id | |
//Lifetype blog id | |
$config['db_lt_blog_id'] = '1'; | |
//========== Wordpress Setting ========= | |
//5. 設定Wordpress資料庫名稱 | |
//Wordpress Database name | |
$config['db_wp_dbname'] = 'wordpressdb'; | |
//6. 設定Wordpress資料庫前綴 | |
//Wordpress Database prefix | |
$config['db_wp_prefix'] = 'wp_'; | |
//7. 設定Wordpress要轉換的部落格id | |
//如果是mu site的話,則設定為$config['db_wp_blog_id'] = '4'; | |
//如果不是mu site的話,則設定為$config['db_wp_blog_id'] = ''; | |
//Wordpress blog id | |
$config['db_wp_blog_id'] = ''; | |
//8. 設定Wordpress文章發表作者id | |
//Wordpress user id | |
$config['db_wp_user_id'] = '2'; | |
//9. 文章預設網址 http://url/post_id | |
$config['db_wp_url'] = 'http://domain.idv.tw/mouson/'; | |
//10. 上傳至主機上,執行頁面 | |
/* ************************************************ | |
* Program Start | |
*************************************************** */ | |
//Lifetype Database Table Name | |
$lt_db_table['articles'] = $config['db_lt_prefix'] . "articles"; | |
$lt_db_table['articles_categories'] = $config['db_lt_prefix'] . "articles_categories"; | |
$lt_db_table['articles_text'] = $config['db_lt_prefix'] . "articles_text"; | |
$lt_db_table['articles_comments'] = $config['db_lt_prefix'] . "articles_comments"; | |
$lt_db_table['article_categories_link'] = $config['db_lt_prefix'] . "article_categories_link"; | |
$lt_db_table['mylinks'] = $config['db_lt_prefix'] . "mylinks"; | |
$lt_db_table['mylinks_categories'] = $config['db_lt_prefix'] . "mylinks_categories"; | |
//Wordpress Database Table Name | |
if($config['db_wp_blog_id'] != '') | |
$config['db_wp_prefix'] = $config['db_wp_prefix'] . $config['db_wp_blog_id'] . '_'; | |
$wp_db_table['posts'] = $config['db_wp_prefix'] . "posts"; | |
$wp_db_table['terms'] = $config['db_wp_prefix'] . "terms"; | |
$wp_db_table['term_relationships'] = $config['db_wp_prefix'] . "term_relationships"; | |
$wp_db_table['term_taxonomy'] = $config['db_wp_prefix'] . "term_taxonomy"; | |
$wp_db_table['comments'] = $config['db_wp_prefix'] . "comments"; | |
$wp_db_table['links'] = $config['db_wp_prefix'] . "links"; | |
// SQL Insert Function | |
Function Sql_Insert ($sql_string) { | |
echo $sql_string; | |
echo "<br /><br />"; | |
if(!mysql_query($sql_string)) | |
die(mysql_error()); | |
} | |
$mysql_link = mysql_connect($config['db_host'], $config['db_username'], $config['db_password']) or | |
die("connect error!"); | |
echo("Database Connected! <br />"); | |
// ---- Category Insert ---- | |
echo "匯入文章類別<br />"; | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" | |
. $wp_db_table['terms'] . "` (`name`, `slug`, `term_group`) " | |
. " SELECT `ltcate`.`name`, `id`, 0" | |
. " FROM `" . $config['db_lt_dbname'] ."`.`". $lt_db_table['articles_categories'] . "` as `ltcate`" | |
. " WHERE `ltcate`.`blog_id` = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" | |
. $wp_db_table['term_taxonomy'] ."` (`term_id`, `taxonomy`, `description`, `parent`, `count`)" | |
. " SELECT mwp_terms.term_id, 'category', ltcate.description, 0, num_articles" | |
. " FROM `" . $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles_categories'] . "` as ltcate, `" | |
. $config['db_wp_dbname'] . "`.`" . $wp_db_table['terms'] . "` as mwp_terms" | |
. " WHERE ltcate.name = mwp_terms.name AND ltcate.blog_id = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入文章類別完成<br /><br />"; | |
echo "匯入開放文章<br />"; | |
//---- Post Insert ---- | |
#匯入文章 status = 1(定稿) | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" | |
. $wp_db_table['posts'] . "` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, " | |
. "`post_title`, `post_status`, `comment_status`, `ping_status`, `post_name`, `post_modified`, " | |
. "`post_modified_gmt`, `post_parent`, `guid`, `menu_order`, `post_type`, `comment_count`) " | |
. "SELECT ltarti.id, " . $config['db_wp_user_id'] . ", ltarti.date, " | |
. "CONVERT_TZ(ltarti.date, '+08:00', '+00:00'), ltarti_text.text, ltarti_text.topic, " | |
."'publish', 'open', 'open', ltarti.slug, ltarti.date, CONVERT_TZ(ltarti.date, '+08:00', '+00:00'), " | |
."0, CONCAT( '". $config['db_wp_url'] . "' , ltarti.id), 0, 'post', ltarti.num_comments " | |
. "FROM `" . $config['db_lt_dbname'] ."`.`" . $lt_db_table['articles'] ."` as ltarti, `" | |
. $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles_text'] ."` as ltarti_text " | |
. "WHERE ltarti.id = ltarti_text.article_id AND ltarti.status = 1 AND ltarti.blog_id = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入開放文章 完成<br /><br />"; | |
echo "匯入草稿文章<br />"; | |
#匯入 草稿 status = 2 | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" | |
. $wp_db_table['posts'] . "` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, " | |
. "`post_title`, `post_status`, `comment_status`, `ping_status`, `post_name`, `post_modified`, " | |
. "`post_modified_gmt`, `post_parent`, `guid`, `menu_order`, `post_type`, `comment_count`) " | |
. "SELECT ltarti.id, " . $config['db_wp_user_id'] . ", ltarti.date, " | |
. "CONVERT_TZ(ltarti.date, '+08:00', '+00:00'), ltarti_text.text, ltarti_text.topic, " | |
."'draft', 'open', 'open', ltarti.slug, ltarti.date, CONVERT_TZ(ltarti.date, '+08:00', '+00:00'), " | |
."0, CONCAT( '". $config['db_wp_url'] . "' , ltarti.id), 0, 'post', ltarti.num_comments " | |
. "FROM `" . $config['db_lt_dbname'] ."`.`" . $lt_db_table['articles'] ."` as ltarti, `" | |
. $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles_text'] ."` as ltarti_text " | |
. "WHERE ltarti.id = ltarti_text.article_id AND ltarti.status = 2 AND ltarti.blog_id = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入草稿文章 完成<br /><br />"; | |
echo "修改文章分頁符號<br />"; | |
#修改分頁符號 | |
$sql_query_string = "UPDATE `" . $config['db_wp_dbname'] . "`.`" . $wp_db_table['posts'] | |
. "` SET post_content = REPLACE ( post_content, '[@more@]','<!--more-->')"; | |
Sql_Insert($sql_query_string); | |
echo "修改文章分頁符號完成<br /><br />"; | |
echo "匯入文章與文章類別關聯<br />"; | |
# ---- Post Category Insert ---- | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" | |
. $wp_db_table['term_relationships'] . "` (`object_id`, `term_taxonomy_id`, `term_order`) " | |
. "SELECT ltarti.id, mwp_terms_tax.term_taxonomy_id, 0 " | |
. " FROM `" . $config['db_lt_dbname'] ."`.`" . $lt_db_table['articles'] . "` as ltarti, " | |
. "`" . $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles_categories'] . "` as ltcate, " | |
. "`" . $config['db_lt_dbname'] . "`.`" . $lt_db_table['article_categories_link'] . "` as ltcate_link, " | |
. "`" . $config['db_wp_dbname'] . "`.`" . $wp_db_table['terms'] . "` as mwp_terms, " | |
. "`" . $config['db_wp_dbname'] . "`.`" . $wp_db_table['term_taxonomy'] . "` as mwp_terms_tax " | |
. " WHERE ltarti.id = ltcate_link.article_id AND ltcate_link.category_id = ltcate.id " | |
. " AND mwp_terms.term_id = mwp_terms_tax.term_id AND mwp_terms.name = ltcate.name" | |
. " AND mwp_terms_tax.taxonomy = 'category' AND ltarti.blog_id = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入文章與文章類別關聯 完成<br /><br />"; | |
echo "匯入文章迴響<br />"; | |
#insert comment type = comment (1) | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] ."`.`" . $wp_db_table['comments'] | |
. "` (`comment_post_ID`, `comment_author`, `comment_author_email`, `comment_author_url`, " | |
. "`comment_author_IP`, `comment_date`, `comment_date_gmt`, `comment_content`, `comment_karma`, " | |
. "`comment_approved`, `comment_agent`, `comment_parent`, `user_id`) " | |
. "SELECT `ltarti`.`id`, `ltcomment`.`user_name`, `ltcomment`.`user_email`, `ltcomment`.`user_url`, " | |
. "`ltcomment`.`client_ip`, `ltcomment`.`date`, CONVERT_TZ(`ltcomment`.`date`, '+08:00', '+00:00'), " | |
. "`ltcomment`.`text`, 0, 1, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 " | |
. "(KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4', 0, 0 " | |
. " FROM `" . $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles'] . "` as ltarti, `" | |
. $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles_comments'] . "` as ltcomment " | |
. "WHERE `ltarti`.`id` = `ltcomment`.`article_id` AND `ltcomment`.`type` = 1 AND `ltarti`.`blog_id` = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入文章迴響 完成<br /><br />"; | |
echo "匯入文章引用<br />"; | |
#insert comment type = treacback (2) | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] ."`.`" . $wp_db_table['comments'] | |
. "` (`comment_post_ID`, `comment_author`, `comment_author_email`, `comment_author_url`, " | |
. "`comment_author_IP`, `comment_date`, `comment_date_gmt`, `comment_content`, `comment_karma`, " | |
. "`comment_approved`, `comment_agent`, `comment_type`, `comment_parent`, `user_id`) " | |
. "SELECT `ltarti`.`id`, `ltcomment`.`user_name`, `ltcomment`.`user_email`, `ltcomment`.`user_url`, " | |
. "`ltcomment`.`client_ip`, `ltcomment`.`date`, CONVERT_TZ(`ltcomment`.`date`, '+08:00', '+00:00'), " | |
. "`ltcomment`.`text`, 0, 1, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 " | |
. "(KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4', 'trackback', 0, 0 " | |
. " FROM `" . $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles'] . "` as ltarti, `" | |
. $config['db_lt_dbname'] . "`.`" . $lt_db_table['articles_comments'] . "` as ltcomment " | |
. "WHERE `ltarti`.`id` = `ltcomment`.`article_id` AND `ltcomment`.`type` = 2 AND `ltarti`.`blog_id` = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入文章引用 完成<br /><br />"; | |
echo "匯入連結類別<br />"; | |
# ---- Links Insert ---- | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" . $wp_db_table['terms'] | |
. "` (`name`, `slug`, `term_group`) " | |
. "SELECT `ltlink_cate`.`name`, `ltlink_cate`.`name`, 0 " | |
. " FROM `" . $config['db_lt_dbname'] . "`.`" . $lt_db_table['mylinks_categories'] . "`as ltlink_cate " | |
. "WHERE `ltlink_cate`.`blog_id` = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
// 當連結類別與文章類別名稱重複時,會產生錯誤 | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" . $wp_db_table['term_taxonomy'] | |
. "` (`term_id`, `taxonomy`, `description`, `parent`, `count`) " | |
. "SELECT `mwp_terms`.`term_id`, 'link_category', `ltlink_cate`.`name`, 0, `ltlink_cate`.`num_links`" | |
. " FROM `" .$config['db_lt_dbname'] . "`.`" . $lt_db_table['mylinks_categories'] ."` as ltlink_cate, `" | |
. $config['db_wp_dbname'] . "`.`" . $wp_db_table['terms'] . "`as mwp_terms " | |
. "WHERE `ltlink_cate`.`name` = `mwp_terms`.`name` AND `ltlink_cate`.`blog_id` = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入連結類別 完成<br /><br />"; | |
echo "匯入連結<br />"; | |
# modify link_owner, blog_id | |
# | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" . $wp_db_table['links'] | |
."` (`link_url`, `link_name`, `link_description`, `link_visible`, `link_owner`, `link_rating`, " | |
."`link_updated`, `link_rss`) " | |
." SELECT `ltlink`.`url`, `ltlink`.`name`, `ltlink`.`description`, 'Y', ". $config['db_wp_user_id'] | |
.", 0, `ltlink`.`date`, `ltlink`.`rss_feed` " | |
."FROM `" . $config['db_lt_dbname'] . "`.`" . $lt_db_table['mylinks'] . "` as ltlink " | |
."WHERE `ltlink`.`blog_id` = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入連結 完成<br /><br />"; | |
echo "匯入連結與連結類別關聯<br />"; | |
# modify blog_id | |
$sql_query_string = "INSERT INTO `" . $config['db_wp_dbname'] . "`.`" . $wp_db_table['term_relationships'] | |
."` (`object_id`, `term_taxonomy_id`, `term_order`) " | |
."SELECT `mwp_links`.`link_id`, `mwp_terms_tax`.`term_taxonomy_id`, 0 " | |
." FROM `". $config['db_lt_dbname'] . "`.`" . $lt_db_table['mylinks'] . "` as ltlink, `" | |
.$config['db_lt_dbname'] . "`.`" . $lt_db_table['mylinks_categories'] . "` as ltlink_cate, `" | |
.$config['db_wp_dbname'] . "`.`" . $wp_db_table['links'] . "` as mwp_links, `" | |
.$config['db_wp_dbname'] . "`.`" . $wp_db_table['terms'] . "` as mwp_terms, `" | |
.$config['db_wp_dbname'] . "`.`" . $wp_db_table['term_taxonomy'] . "` as mwp_terms_tax " | |
."WHERE `ltlink`.`category_id` = `ltlink_cate`.`id` " | |
." AND `ltlink`.`name` = `mwp_links`.`link_name`" | |
." AND `mwp_terms`.`term_id` = `mwp_terms_tax`.`term_id`" | |
." AND `mwp_terms_tax`.`taxonomy` = 'link_category'" | |
." AND `ltlink_cate`.`name` = `mwp_terms`.`name`" | |
." AND `ltlink`.`blog_id` = " . $config['db_lt_blog_id']; | |
Sql_Insert($sql_query_string); | |
echo "匯入連結與連結類別關聯 完成<br /><br />"; | |
echo "Lifetype to Wordpress 轉換 完成<br /><br />"; | |
mysql_close($mysql_link); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment