MovableType(MT)からWordPressへの具体的な移行手順

家富正幸

私が行なっているMovableType(MT)からWordPressへの具体的な移行手順を書きましたのでエンジニアの方などの参考になれば幸いです。

確認をする

まず、MovableTypeではバージョンによってサイトの構築方法が異なってくるため、移植元のサイトがどのMovableTypeを利用しているかを確認します。

MovableTypeの主に利用されているバージョンとしては、大きく分けると3、4、5の3つのバージョンがあります。

まず、バージョン3までは、1つのMovableTypeで1つのサイトしか運用することができませんでした。主にブログとしてのイメージが強かった時期です。

次に発表されたバージョン4から「マルチブログ」という機能が実装され、1つのMovableTypeで多数のサイトを管理することができるようになりました。
この頃から、昨今では標準となっている「カスタムフィールド」の概念が導入され、ブログとしてのイメージから「CMS」としてのイメージが強くなりました。

さらにバージョン5になると、ウェブサイトとブログという概念が導入され、ウェブサイトにブログが所属するという構成となりました。

今までのブログというイメージから、完全にCMSという概念を全面に押しだし、コンテンツを管理するための仕組みとしてアピールされるようになりました。

この3つのバージョンの違いをまずは確認し、どのバージョンが利用されているか、またその運用の形態から、最終的にWordPressでどのように管理するべきかを判断します。

設計をする

MovableTypeでどのバージョンが利用されているか、1つのMovableTypeでいくつのブログやサイトを運営しているかが確認できたら、次にそれをどのようにWordPressに当て込んでいくかを設計します。

例えばMovableType4で複数の全く別々のブログを利用している場合です。
この場合、以前同様に複数のブログを1つのWordPressで管理する、いわゆるマルチサイトで移植する方法が1つ。

・ブログA-A → ブログA-A
・ブログA-B → ブログA-B

また、各ブログを全く別々のアカウントで管理しているならば、1つのWordPressで管理するメリットも無いため、全く別々のWordPressとして管理するという方法もあります。

・ブログA-A → ブログA
・ブログA-B → ブログB

次に、MovableType5で1つのウェブサイトに、複数のブログを追加して運用している場合です。

この場合はいくつかの移植方法が考えられます。
例えば、ウェブサイトの「お知らせ」「よくある質問」「Q&A」などを、ブログとして管理している場合。

この場合、それぞれのブログをいちいちマルチサイトで構築しなくとも、WordPressでは「カスタム投稿」という便利な機能がありますので、そちらに割り当ててしまうことで、複数のブログ管理という煩わしさから抜け出すことができます。

・ウェブサイト → ウェブサイト
・ブログA-A  → カスタム投稿A
・ブログA-B  → カスタム投稿B

URLの設計も忘れてはいけません。
2つのブログを別々のドメインで運用している場合などは注意が必要です。

MovableTypeでは1つのサーバーをマルチドメインで運用している場合でも、1つのMovableTypeで、それぞれのドメイン上のサイトを管理することが可能です。

しかしながらWordPressのマルチサイトを利用する場合、1つのサーバーに複数のサブドメインが割り当てられているという運用であれば問題無いのですが、もしマルチドメインとなった場合、対応することができません。

※厳密にはプラグインなどを利用することで対応することは可能ですが、

オフィシャルに対応している機能では無いためリスクを孕みます。

※サブドメインとは下記のように1つのドメインに複数のプレフィクス(aaa.やbbb.など)を用いたドメインのことを指します。

aaa.example.com
bbb.exmaple.com
ccc.exmaple.com

※マルチドメインとは下記のように複数の全く異なるドメインが1つのサーバーに割り当てられている状態のことを指します。

example.com
hogefuga.com
foobar.com

そのため、複数のドメインを1つのMovableTypeで管理している場合などはWordPressを分けて設置するなどの工夫が必要となってきます。

また、カスタム投稿を利用する場合やカスタム分類を利用する場合も、元のサイトのURL構造を確認した上で、以前と同様の構成となるように、スラッグ(URL文字列)の設定などを行います。

テーマ作成

ステップ2で設計した内容を元に、実際の構成をテーマファイルとして作成します

MovableTypeのテンプレートを元に、WordPressのテーマファイルに落とし込んでいきます。

幸いなことにMovableTypeもWordPressも、MTMLなのかPHPなのかの違いはありますが、同様の構造をしている事が多いためよほどのことが無い限り、構成を保ったままテーマファイルを作成することが可能です。

※MTML ・・・ MovableTypeのテンプレートに利用されるマークアップ言語

移植用テンプレートを作成

MovableTypeからWordPressに移植する場合、MovableType標準のエクスポート機能を利用すると考えてしまいがちですが、これは大きな落とし穴となります。

例えば、カスタムフィールドなどを利用している場合です。

MovableTypeのエクスポート機能はブログでの運用を元にしているため、カスタムフィールドなどの細かな属性は、データに含まれません。

そのため、WordPress側で取り込もうとしても、カスタムフィールドなどの情報を正しく取り込むことができません。

ここで、WordPressの記事データをエクスポートする際に作成される、xml形式のデータに注目します。

WordPressが生成するxmlファイルには、各記事のタイトルや本文などのデータとは別に、カスタムフィールドのデータも全て記述されて出力されるため、完全な形式でのエクスポートが可能となっています。

このデータはWordPress形式でのインポートとして利用する事ができるため、MovableType側でこの「WordPressがエクスポートに利用するフォーマット」を、再現することでカスタムフィールドを含めた完全なデータをMovableTypeから移植することが可能となるのです。

ということで、MovableType側で必要なテンプレートを作成、再構築を行い、インポートするためのxmlファイルを生成します。

インポートとURLの修正

作成したxmlデータをWordPress形式のデータとしてインポートすると、記事のデータやカスタムフィールドのデータは、ほぼ正しくWordPressに取り込まれます。

しかし、MovableType側でアップロードした画像やファイルのURLなどは、この時点では以前のままのため、リンク切れなどが発生してしまいます。

そこで次に、ファイルの移動とURLの書き換えを行っていきます。

まず、MovableType側でアップロードしたファイルを全てWordPress側で参照できる場所に移動(アップロード)します。

アップロードしただけでは各記事に埋め込まれたURLや、カスタムフィールドの値は書き換わっていませんので、合わせてそのURLを修正する作業を行います。

URLの修正を1つ1つ手動で行うのは、記事が多い場合あまり現実的な方法ではありません。

かといって、WordPressには便利な置換機能などが備わっていないため、この場合、データベースを直接書き換えて対応するのが最も効率的です。

しかしながら、直接SQLを使って修正してしまうと、WordPressのデータベースにはPHPのシリアライズされたデータが壊れてしまう場合があり、せっかく移植したデータが壊れてしまう場合があります。

そこで、WordPressを移設する際などに利用する、便利なデータ書き換えツールを利用します。

・Search Replace DB
http://inspire-tech.jp/2013/10/wordpress-search-replace-db/

このツールを利用して、記事中のリンクURLやカスタムフィールドのURLを、正しいURLに書き換えていきます。

URL構造の確認

ここまで来ればあと一息で移植完了です。
最後に、移植前のサイトと同様のURL構造をできる限り再現します。

WordPressでは通常、URLの末尾に.htmlなどの拡張子を付ける事ができません。

MovableTypeは静的ファイルを生成して管理する方法のため、多くの場合、URLの末尾には.htmlという拡張子がついているはずです。

そこで、プラグインの力を借りてこの問題を解決します。

【.html on PAGES】
http://wordpress.org/plugins/html-on-pages/

固定ページの末尾に強制的に .html の拡張子を取りつけます。

【Custom Permalinks】
http://wordpress.org/plugins/custom-permalinks/

投稿や固定ページ、各種カスタム投稿のURLを自由な構造に変更することができます。

上記2つのプラグインを用いる事で、各種URLを任意の形式にまとめる事ができます。

唯一再現できないURLとして、ページネーション(ページ切り替え)などが発生したときのURLについては、MovableTypeとWordPressでは完全に管理構造が違うため、再現することができません。

完全に一致をさせなくてはならない場合などは、注意をした方が良いでしょう。