Importing from MT 3.2 to WP 2.0.2 やってみたので忘れないうちにメモ。
MTで使っていたIDをWPでそのまま使う、Movable TypeからWordPressの移行方法については、Mudita JournalさんのImporting from MT to WordPressという記事を参考にしたのですが、この方のMTはバージョン2.6のようで、MT3.2とはファイルのプログラムの記載が若干異なっているようなので、まとめ直してみました。
MTのエクスポートスクリプト(ImportExport.pm)を編集する
まずはMovable Typeのエクスポートスクリプト(ImportExport.pm)をいじります。/lib/MT/ImportExport.pmをテキストエディタで開いて、sub exportの文字列を検索します。
その下に
$tmpl->text(<<'TEXT');
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
……
という文字列があります。ここにある項目がMTの書き出しによって書き出されてくるので、ここにID: <$MTEntryID$>の項目を付け足してやります。
$tmpl->text(<<'TEXT');
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
ID: <$MTEntryID$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
……
こんな感じに。場所は必ずここってわけでもないようですが。書き換えたら、元の位置にアップロードして上書きします。
MTの書き出しから、データをエクスポート
MTの管理画面のメニューから「読み込み/書き出し」を選びます。「< strong>エントリーの書き出し」タブを選んで、「(サイト名)のエントリーを書き出す」のリンク先をテキスト形式で保存します(テキストエディタで開いて、バックアップデータにMTのIDがきちんと入っていることを確認しておくことを忘れずに)
WPのインポートスクリプトを置き換える
上述したMudita JournalさんがImporting from MT to WordPressにて、MTのIDも含めてインポートできるスクリプト(?)を公開されているので、こちらを利用させてもらいます。
ダウンロードして(検索で「this one」の文字列を検索するとそこからダウンロードできます)解凍してできたmt.phpを/wordpressインストールディレクトリ/wp-admin/import/にアップロードして置き換えてやります。
※ Mudita Journalさんでは、元のファイルはバックアップのためmtORIG.phpに変えておくように書かれていますが、なぜかわたしの環境では mtORIG.php(mtORIGINALとかでもダメ)が邪魔して(このあと行う)スクリプトが実行されなかったので、サーバー上のファイルは上書きしてしまいました。ローカルの元ファイルは取っておくと安心かもしれませんね。
インポートを実行する
WordPress管理画面の「インポート」をクリックして、さらにインポート元 CMSとして「Movable type」を選択します。
すると左のような画面になるので、さきほど作成したMTのエントリーデータを指定します。
次にMTのエントリーを、どのユーザ名の投稿として取り込むかを選択します。全部adminとして取り込むこともできるので、これでいってみました。
取り込み中。決して忙しいわけではありません。
「すべて完了しました」と出たらインポート終了です。メイン画面に戻って取り込みがきちんとできているか確認してみましょう。
.htaccessを使って旧URLへのアクセスを新URLにリダイレクトする
ここからはオプションのようなものですが、MTのエントリーへのアクセスがあった場合に、同じ内容のWPのエントリに自動的にリダイレクトするようにしてみました。
URLが移動した場合の.htaccessの書式は、
Redirect Permanent 旧URL(相対パス) 新URL(フルパス)
なので、1エントリごとに1行ずつ書いてやらないといけません。
バカ正直に書くのは激しく面倒なので、Wordpress WikiのA method for redirecting Movable Type entries to Word Press permalinks using .htaccessを参考に、MTのテンプレート作成機能を使ってファイルを一つ作ってやります。
MT管理画面の「テンプレート」→「テンプレートを新規作成」で、テンプレート名:Redirect、出力ファイル名:redirect.phpと入力(名前はこうじゃなくてもいいんですけどね)。
テンプレート内容に
<?php
require('wp-config.php');
header('Content-type: text/plain');
?>
<MTEntries lastn="999999">
Redirect Permanent /mt/archives/<$MTEntryID pad="1"$>.php http://www.yourpage.com/archives/<$MTEntryID$>
</MTEntries>
と入力します(赤字のところは、環境に合わせて修正してくださいね)。
この内容で保存→再構築してできたredirect.phpをダウンロード。テキストエディタで開いてやるといっぱい redirectが並んでいるので、これを.htaccessにコピー&ペースト&アップロードすれば完了です(アップロード先は rootディレクトリ。すでに存在する場合は上書きではなく、中身に追記してください)。