全て裏側語ります!MovableTypeからWrodPressへの移行について

今回は、ご相談ご依頼を頂く事が多くなった、
MovableTypeからWordPressへの移行について、

私どもがどういった手順で移行を行っているかの、
具体的な手順と方法の裏側をご紹介いたします。

▼ステップ1 確認をする

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

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

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

次に発表されたバージョン4から「マルチブログ」という機能が実装され、
1つのMovableTypeで多数のサイトを管理することができるようになりました。

この頃から、昨今では標準となっている「カスタムフィールド」の概念が導入され、
ブログとしてのイメージから「CMS」としてのイメージが強くなりました。

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

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

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

▼ステップ2 設計をする

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文字列)の設定などを行います。

▼ステップ3 テーマ作成

ステップ2で設計した内容を元に、実際の構成をテーマファイルとして作成します。
MovableTypeのテンプレートを元に、WordPressのテーマファイルに落とし込んでいきます。

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

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

▼ステップ4 移植用のテンプレートを作成

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

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

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

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

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

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

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

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

▼ステップ5 インポートと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/?utm_source=submitmail&utm_medium=26

※詳細な利用方法などをまとめた僕のブログをご覧ください。

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

▼ステップ6 URL構造の確認

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

WordPressでは通常、URLの末尾に.htmlなどの拡張子を付ける事ができません。
MovableTypeは静的ファイルを生成して管理する方法のため、多くの場合、URLの末尾には.htmlという拡張子がついているはずです。

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

【.html on PAGES】
https://wordpress.org/plugins/html-on-pages/?utm_source=submitmail&utm_medium=26

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

【Custom Permalinks】
https://wordpress.org/plugins/custom-permalinks/?utm_source=submitmail&utm_medium=26

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

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

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

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

▼最後に

以上、僕が行っている
MovableTypeからWordPressへの移行の手順と方法です。

こちらの方法を用いる事で、ある程度簡素なサイトであるなら、移植を行うことができるかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUTこの記事をかいた人

インスパイアデザインの取締役兼、エンジニア。WordPressのテーマ・プラグイン開発を年間100件以上、独自のフレームワークを用いて開発をしています。