才剛剛發表完一篇如何將f2blog的迴響資料利用資料庫的指令去轉入wordpress的資料表中,怎麼會又來一篇呢?

其實是因為朋友在我轉完後,發現了個問題,就是如果你的網站的參觀量大、引用量多、或是文章連結常常出現在別人家的網誌裡(當然不是在說我….),因為f2blog匯入至wordpress的時候,整個編號都重新改過變成新的了,所以上面這些像是引用或是別人曾經發表過關於你的連結,也都會失效….也就是找不到文章。

那這問題要如何解決呢?其實最快的方法,也最直接的方法,就是直接把wordpress的文章編號變成當初在f2blog裡面的編號,不就得了!這樣在拋轉迴響的時候,也不用做兩道手續去更新資料抓取對應了….

所以我就整個重新拋轉了一次 @@

 

先講一下拋轉前的環境,在做下面動作前,是必須先透過RSS匯入f2blog的文章至wordpress的資料表中,接下來就直接做下面的動作了

1.新增欄位於wp_posts
 f2blog_id int(12)

2.更新f2blog_id這個欄位資料,塞入f2blog_logs的id
UPDATE (wp_posts LEFT JOIN f2blog_logs ON wp_posts.post_title = f2blog_logs.logTitle)
SET wp_posts.f2blog_id = f2blog_logs.id
WHERE f2blog_logs.id <> 125

3.更新wp_post2cat的post_id,這是文章對應類別的資料表,先把這裡的編號整合更新
UPDATE (wp_posts LEFT JOIN wp_post2cat ON wp_posts.ID = wp_post2cat.post_id)
SET wp_post2cat.post_id = wp_posts.f2blog_id

4.更新wp_posts的ID
為避免編號重複,先將wp_posts的編號加個10000,如果你的文章超過一萬筆,那數字就自己多加幾個0吧
UPDATE wp_posts SET ID = ID + 10000
編號改完之後再來更新wp_posts的ID
UPDATE wp_posts SET ID = f2blog_id WHERE post_type = 'post'

5.轉換f2blog_comments時間欄位為varchar屬性
ALTER TABLE `f2blog_comments` CHANGE `postTime` `postTime` VARCHAR( 100 ) NOT NULL DEFAULT '0'

6.轉換f2blog_comments時間欄位的unixtime
UPDATE `f2blog_comments` SET `postTime` = FROM_UNIXTIME(`postTime`)
WHERE `f2blog_comments`.`id` >=1 LIMIT 99999

7.轉換f2blog_comments時間欄位為datetime屬性
ALTER TABLE `f2blog_comments` CHANGE `postTime` `postTime` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'

8.整理完畢開始拋轉f2blog→wp
INSERT INTO wp_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 logId,author,email,homepage,ip,postTime,postTime,content,0,'1','','','0','0'
FROM f2blog_comments

9.更新wp的wp_post迴響數
UPDATE (wp_posts LEFT JOIN f2blog_logs ON wp_posts.ID = f2blog_logs.id)
SET wp_posts.comment_count = f2blog_logs.commNums

10.刪除wp_posts的f2blog_id(12)這個欄位
ALTER TABLE `wp_posts` DROP `f2blog_id`

11.更新自動增加的wp_posts的數值(因為步驟4將此測定值變更了,所以要轉回來)
SELECT max(ID) FROM wp_posts
上面的指令執行完後,會出現一組數字,將數字填入下面最後的數字欄位中再執行
ALTER TABLE wp_posts AUTO_INCREMENT =184

這次多了三個步驟,因為除了文章的編號要更新,文章對應類別的資料表(wp_post2cat)內的文章編號也要更新,既然f2blog與wordpress兩邊的編號都已經整合同步,再匯入迴響資料的時候直接帶f2blog的文章編號就可以了,所以跑完上面這幾個步驟就整個完成了!

用這種方式的好處呢,就是除了資料非常的完整之外,再也不用擔心別人家曾經連結過的資料會找不到網頁了,不過這好像還要做另外一道手續,這部份另外等專家來發表嚕!我的部分到這邊就完工啦!哇哈哈~~~

Be Sociable, Share!