Skip to content

Instantly share code, notes, and snippets.

@mouson
Created October 12, 2015 19:33
Show Gist options
  • Save mouson/15e6c7bb465076c8e349 to your computer and use it in GitHub Desktop.
Save mouson/15e6c7bb465076c8e349 to your computer and use it in GitHub Desktop.
<?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