Movable Type 2.661 轉換到 WordPress 2.7 (進階版)

由於安裝 MT 2.661 的門檻較高,所以這篇文章只記錄了重點,僅適用於熟悉系統的網友,如果有不清楚的地方也歡迎留言告知。

1.MT 匯出前要改樣版把 postid 一併匯出,MT 2.661 是編輯:

/cgi-bin/mt/lib/MT/App/CMS.pm


大約在2973行,可以看到以下的程式碼:

<MTEntryCategories>
CATEGORY: <$MTCategoryLabel$>
</MTEntryCategories>
DATE: <$MTEntryDate format=”%m/%d/%Y %I:%M:%S %p”$>
POSTID: <$MTEntryID$>
—–
BODY:
<$MTEntryBody convert_breaks=”0″$>

2.再來要修改 WP 2.7 的:

wp-admin/import/mt.php

大約在 375 行的位置加入紅字的部份便可讀取 postid:

} else if ( 0 === strpos($line, “TITLE:”) ) {
$title = trim( substr($line, strlen(“TITLE:”)) );
if ( ” == $context )
$post->post_title = $title;
else if ( ‘ping’ == $context )
$ping->title = $title;
} else if ( 0 === strpos($line, “POSTID:”) ) {
$post_id = trim( substr($line, strlen(“POSTID:”)) );
$post->post_id = $post_id;

} else if ( 0 === strpos($line, “STATUS:”) ) {
$status = trim( strtolower( substr($line, strlen(“STATUS:”)) ) );
if ( empty($status) )
$status = ‘publish’;
$post->post_status = $status;

3.再來處理 WP 2.7 寫入 postid 到資料庫,大約在 1477 行:

if ( !empty($import_id) ) {
$import_id = (int) $import_id;
…略
}
if (!empty($post_id)) $data[‘ID’] = $post_id;
if ( false === $wpdb->insert( $wpdb->posts, $data ) ) {
if ( $wp_error )
…略
}

(建議 MT 轉入完成後把這行移除掉)

4.再來是讓 WP 用正確的編碼方式寫入 MySQL,在 phpmyadmin 才能正常讀取。

編輯 wp-config.php,在 MySQL Settings 加入:

define(‘DB_CHARSET’, ‘utf8’);
define(‘DB_COLLATE’, ‘utf8_general_ci‘);

注意 DB_COLLATE 要跟 MySQL 的設定相同,如果 MySQL 的不是設 utf-8 的連線校對的話,記得要修改一下。

到這邊就算處理好舊文對應的 MT 匯出及 WP 匯入 postid 的相關處理了,再來就進入正式進行轉換的動作。

5.從 MT 左方「匯出/匯入」->「匯出XXX的文章」(右鍵->另存新檔)

20081218_01

6.到 WordPress 設定時區為 UTC +8 台灣時間

20081218_03

7.再到「工具」->「匯入」->「Movable Type」-> 選擇檔案即可。

20081218_02

虛擬主機如果有執行時間限制,在轉換的過程會出現:

Maximum execution time of 30 seconds exceeded

這個可以不用管它,按下重新整理即可,Wordpress 會自動跳過已存在的項目。

8.設定 WP 連結方式,在「設定」->「固定鏈結」->「數值」

mt-wp-url-setting

9.再搭配設定 .htaccess 的 URL Redirect 讓 MT 網址轉至 WP。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^archives/([0-9]{6})\.php$ archives/$1 [R=301,L]
RewriteRule ^archives/(200[0-9])_([0-9]{1,2})\.php$ archives/date/$1/$2 [R=301,L]
RewriteRule ^cgi-bin/mt-search\.cgi?tag=([^&]+).*$ archives/tag/$1 [R=301,L]
RewriteRule ^atom\.xml$ feed/atom [R=301,L]
RewriteRule ^rss\.xml$ feed [R=301,L]
RewriteRule ^index\.rdf$ feed/rdf [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

*請確認主機的 mod_rewrite 有正確啟用。
*不要寫在 #BEGIN WORDPRESS# 跟 #BEGIN WORDPRESS# 裡面,會被WP的設定蓋掉。

轉換成功之後,記得把步驟3加入的程式碼移除,並且恭喜您正式成為 WP 一族了。^^

註: 本篇舊文轉換的方式是參考 Oecanic 從 MT4 轉換的方式修改而來的,但是我添加了比較多細節的處理,如果您是 MT4 的用戶可以二邊比對來看。

附錄 1 – 例外狀況的處理:

* 匯入 WP 的過程失敗可以用以下的 SQL 語法清掉資料庫重來:

TRUNCATE `wp_postmeta`;
TRUNCATE `wp_posts`;
TRUNCATE `wp_terms`;
TRUNCATE `wp_term_relationships`;
TRUNCATE `wp_term_taxonomy`;

* 忘了設定時區 UTC +8 怎麼辦? 別擔心,先執行下面的 SQL 語法:

update  `wp_posts`  set `post_date_gmt` = DATE_SUB( `post_date_gmt` , INTERVAL 8 HOUR );

然後再依照步驟 6 設定時區即可。

附錄 2 – 建議安裝的外掛:

* WP 會把特殊字元包含單引號、雙引號、大小於…等替換成其它的字元,必須安裝 Quotmarks Replacer 才會正常顯示。

下載網址:
http://sparanoid.com/tag/quotmarks-replacer/

* 如果原本是流量就很大的網站,很快就會開始有垃圾迴響,可以安裝 Yawasp 來避免,因為是採動態產生欄位,所以不用驗證碼。

下載網址:
http://wordpress.org/extend/plugins/yawasp/

安裝教學:
http://briian.com/?p=5604

* 如果有使用到 Google Analytics 的話,只要安裝這個外掛就不用改樣板了。

下載網址:
http://mycvs.org/archives/2008/01/03/google-analytics-wordpress-plugin-v12/

* 如果你想要文章很快的被搜尋引擎給收錄的話, Google XML Sitemaps Generator 就一定要安裝了,這個外掛也同時支援 Yahoo! 跟 MSN 的 Sitemap。

下載網址:
http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar