Movable TypeからWordPressにリンク切れを起こさずに移行する方法

 

こんにちは、オンラインの金沢です。

今回は、最近行ったMovable TypeからWordPressへの移行方法について書きます。

 

Movable Typeとは、シックス・アパート社が開発・提供するCMSプラットフォームです。私もまだまだ経験が浅く、WordPressくらいしか使ったことがなかったので初めて触りました。WordPressと大きく異なる点は出力がPHPファイルではなく、HTMLファイルを生成して公開しているところです。それならシステムエラーが生じても公開済みページに悪影響を与えることがなく安全ですね。

 

WordPressへの移行の基本的な方法はWordPress Codexに書いてありました。

Movable Type から WordPress への移行 – WordPress Codex 日本語版

そのままでも移行はできたのですが、記事のパーマリンクが移行前後で変わってしまいました。このままだと以前のURLでアクセスされると404エラーになってしまいますので、少し工夫をしてインポートし直しました。設定により手法が変わるかもしれませんが、参考までにメモしておきます。Movable Typeのバージョンは4.1で、WordPressは4.1.1になります。

 

まず、Movable Typeの記事の登録項目でパーマリンクの代わりになる設定値は「出力ファイル名」になります。公開時に、この名前で月別ディレクトリにファイルが生成されるようです。しかし、デフォルトの設定だと”_”の記号が”-“に代わってしまうそうで、出力ファイル名が”post_123″の記事が”post-123.html”で出力されていました。

インポート時に「出力ファイル名」は「スラッグ」に登録されるのですが、上記の理由から”_”を”-“に変換するようにインポートのシステムファイルを修整する必要がありました。インポートはプラグインで行われますので、「Movable Type and TypePad Importer」のmovabletype-importer.phpを書き換えました。387~390行目の

			} else if ( 0 === strpos($line, 'BASENAME:') ) {
				$slug = trim( substr($line, strlen('BASENAME:')) );
				if ( !empty( $slug ) ) {
					$post->post_name = $slug;

がエクスポートファイルに記述された各記事の「出力ファイル名」を、新規投稿用オブジェクト$postの「スラッグ」に該当するプロパティpost_nameに代入する場所です。390行目を

					$post->post_name = str_replace( '_', '-', $slug );

と書き換えます。これでインポートすればWordPress側の「スラッグ」がMovable Typeが生成したファイル名と同じになります。

 

また、URLに”.html”が付いていても404エラーになりますので、リライトルールを追加して拡張子を取り除きます。functions.phpに下記のようなコードを追加してください。

function custom_rewrite_basic() {
  add_rewrite_rule( '(.*)\.html$', '$1 [R=301,L]' );
}
add_action('init', 'custom_rewrite_basic');

そして、パーマリンクの設定を更新するとトップディレクトリのhtaccessファイルが更新されますので、リライトルールが適応されます。

 

最後に、Movable Typeは記事のファイルを月別ディレクトリに入れていましたので、それに合わせてパーマリンク設定を変更します。

/%year%/%monthnum%/%postname%

これで投稿のパーマリンクが「/年/月/スラッグ」となりますので、完了となります。”%postname%”を”%post_id%”(投稿ID)でもリダイレクトしてくれますが、もとのファイル名が数字だけの場合に404エラーになりました。「スラッグ」が数字でもIDでリクエストされたと思われてしまうようです。

 

WordPress以外のCMSやリライトルールなど、知らないことが多くて勉強になりました。Webプログラムはまだまだ奥が深いことを痛感しております。

金沢

 

参考

WordPress Codex日本語版 | add_rewrite_rule
.htaccessによるURLの書き換え Rewrite(リライト)

著者プロフィール

金沢大樹

2年間のアルバイトを経て、平成27年度より社員として株式会社オンラインでWeb制作をしております。
WordPressを得意としており、プラグイン開発の経験もございます。
また、Monacaを使用したスマートフォンアプリ開発や、Visual BasicによるWindowsアプリケーション開発もできます。

コメントを残す

コメントは管理者による承認後に公開されます。

CAPTCHA