MovableTypeは使い勝手もよく、機能も情報も豊富で非常にいいと思うのですが、エントリが300を超えて、再構築の時間が結構かかるようになってきました。ダイナミックパブリッシングでもいいのですが、ここは一つテンプレートが豊富でデザインセンスのない私のためのソフトのようなWordPressへ移行しようかと思っています。
という訳で、近々WordPressに引っ越すため、データを移す方法を調べてみました。
- 全てのデータを移行
- Permalinkをそのまま使えるようにしたい
- 出来ればエントリータグも移したい
- テンプレート・デザインは無理もしくは必要ない
- バージョンはMovableTypeは3.35J, WordPress ME2.20
WordPressはインポート・エクスポート機能が強力で、MovableTypeも簡単にデータのエクスポートが出来ます。基本的にデータを移行するだけなら、双方の基本機能だけで行えますが、各エントリのURLについては、MovableTypeのエクスポートデータに含まれないため、そのままでは無理そうです。タグデータも同様です。
調べてみたのですが、少し古めの情報しかありませんでした。最近の情報で最も近そうなのは以下で紹介されている方法ですが、railsを使われており、出来ればMovableTypeとWordPressだけでなるべくお手軽にやってみたいところです。
ソースを調べたところ、簡単そうなので自力でいじってみることに。結果パーマリンクはいけたのですがタグの情報が移せていません。やり方を以下に紹介します。
基本は$MT/lib/MT/ImportExport.pmに手を加えて、URLとタグと出力させ、対応する入力部分を$WP/wp-admin/import/mt.phpに作ればいけるはずです。
まずはWordPressでURL書き換えの設定。管理画面の[各種設定] -> [パーマリンク設定]画面の "一般的な表示:"の中の"独自表記..."をチェックし、以下のパターンを入れて"パーマリンク構造を更新"を行います。サーバでmod_rewriteが使えることが必須、WordPressのトップディレクトリにapacheから書き込み権限があると楽です。
MovableTypeの修正。$MT/lib/MT/ImportExport.pm:541行目に以下の(折り返してますが)4行を追加
<MTEntryIfTagged>
TAGS: <MTEntryTags glue=","><$MTTagName$></MTEntryTags></MTEntryIfTagged>
ID: <$MTEntryID$>
WordPressの修正。$WP/wp-admin/import/mt.phpをいじります。275行目のdefault:の前に以下を追加。超手抜きです。
$tmpvalue = strrchr($value,"/");
$post_name = substr($tmpvalue, 0, strpos($tmpvalue, "."));
break;
295行目を以下のように修正。折り返していますが1行です。見づらいですが要は'post_name'を付け足すだけです。
'post_content', 'post_title', 'post_excerpt', 'post_status',
'comment_status', 'ping_status', 'post_modified',
'post_modified_gmt', 'post_name');
変更が終わったらMovableTypeから全エントリを書き出ししてWordPress側でインポート。IEではエクスポートに問題があると話もあるようですが、Firefoxでは問題なしで、ほぼいけた感じです。何とかタグを移行したくて、これからもいじりそうなので、以下のところでこのエントリーの内容をまとめています。後はmeta keywords/descriptionなんかも移したいところです。keywords/タグも移せるようになりました。是非以下のwikiをご覧下さい。
エントリータグもメタ関連も機能もWordPressの標準機能にないようなので、プラグインが前提になってしまいますし、それなりに変更が必要そうです。とりあえずカスタムフィールドに入れようか。タグはUTWが良さそうなので、これの使用を前提になにか考えるか。。。
既に情報があるよ、とかもっとこうしたらいいよ、問題あるよーなど、ご意見いただけると幸いです。
#TB頂いたなないろブログさんで間違いのご指摘を見つけたので修正しました。
コメント (1)
記事を参考にさせていただきました、ありがとうございます
一点どうしても分からない点があり、「教えてGOO」で質問しましたが、解決策は見つかりませんでした
もしよろしかったら教えていただけませんでしょうか?
MT側の設定の
$MT/lib/MT/ImportExport.pm
に手を加えて、URLとタグと出力させる事はできましたが
WP側の設定の
$WP/wp-admin/import/mt.php
の部分で躓いているのだと思います
どうしてもURLを引き継いでくれません
以下の2つのページは同じページのURLの末尾ですが
移行前と移行後で、どうしても異なるURLになってしまいます
(日付だけは同じにできる)
MT側のURL
/2008/01/rss_10.html
WP側のURL
/2008/01/rssieauuieycyyyoio.html
コメント欄に長々と書いてしまって申し訳ありませんが
お時間のある際にでもお返事いただければ幸いです
どうぞよろしくお願いします
投稿者: jack | 2008年01月08日 09:09
日時: 2008年01月08日 09:09