「WordPressで作成したブログ記事をDrupalにインポートできたらいいのに」と思ったことはありませんか?drupal.orgをちょっと調べてみると、Wordpress Importというモジュールをすぐに見つけることができます。これは最近のWordPressで実装されているエクスポート機能(WRX)で生成されたxmlファイルからデータをインポートするものです。他にもWordPressのデータをインポートする方法はあるでしょうが、Wordpress Importを利用するのが手軽かと思い、CocoaSpaceでも使用したのでノートしておきます。今回使用したのはバージョン6.x-1.1です。
使用の前に
インポートできる項目
Wordpress Importは先述のXMLファイルからデータをインポートするため、ブログ記事、ページ記事、コメント、カテゴリー、タグ以外の項目はインポートされません。WordPressのプラグインで作成した機能(コンタクトフォームなど)はインポートされないのでご注意ください。WordPressのテスト環境に今回インポートするXMLファイルをインポートし、不要な記事を予め削除しておくとよいかもしれません。
バックアップを忘れずに!
モジュールをインストールするときはいつもそうなのですが、このモジュールを使用する際には特にサイトのバックアップを忘れずにとっておいてください。
使用するコンテンツタイプ
Wordpress Import 6.x-1系ではWordPressのインポートにblog、story、pageの3タイプを利用できます。WordPressのブログ記事はstoryまたはblog(blogコンテンツタイプがある場合)のどちらかを選択してインポートできます。WordPressの"ページ"はpageタイプに自動的にインポートされます。
コアのBlogモジュールを使用しなくても、blogというコンテンツタイプを追加し、そこにインポートすることも可能です。コアのBlogモジュールは複数ユーザによるブログには向いていますが、一人で書いているブログには向いていない気がするので、CocoaSpaceではblogというコンテンツタイプを追加し、Viewsなどを利用してブログの一覧やカテゴリブロック、月別アーカイブなどを作成しました。
WordPressのカテゴリーとタグ
Wordpress ImportはWordPressのカテゴリーとタグのインポートにDrupalのタクソノミーを使用します。それぞれ、Wordpress category(複数選択)、Wordpress tag(タグ)というボキャブラリが自動的に作成され振り分けられます。
Wordpress categoryとWordpress tagというボキャブラリが自動で作成されます。
インポートした記事やコメントの編集の問題
Wordpress Importでインポートする際に作成したユーザでログインし、投稿やコメントを編集しようとしてもできませんでした。もちろんサイトの管理者(user 1)は編集できます。
記事中の画像の問題
ほとんどの類似のインポート機能に当てはまると思いますが、画像は旧WordPressブログのファイルパスが使用されていますので、インポート後に修正する必要があります。CocoaSpaceでは記事数が少なかったので、全部手動でImageFieldでアップロードしなおしました。
また、WordPressのキャプションについてはサポートされていないので、WordPress独自のキャプションのコードがそのままインポートされた記事に表示されてしまいます。WordPressのテスト環境に今回インポートするXMLファイルをインポートし、キャプションを使用しないように変更すると良いでしょう。
使用法
インストール
Wordpress Importバージョン6.x-1系ではTrackbackが必須ですのでこちらもインストールすることになります。WordPressでドラックバックを使用しておらず、また今後もDrupalでトラックバック機能を使う予定のない方は、Trackbackモジュールをインストールしなければならないことに違和感を覚えるかもしれません。インポートを終えてからTrackbackモジュールをアンインストールしてください。まだ開発段階のWordpress Import 6.x-2系ではTrackbackモジュールへの依存はなくなっています。
インポート
インポートの作業は非常にシンプルなので、ご紹介する必要はないかもしれませんが、こんなに簡単にできますというのをご紹介する意味も込めて簡単にご紹介します。
STEP 1:
予めWordPressからエクスポートしておいたXMLファイルをアップロードします。sites/default(またはexample.com)/filesディレクトリに、wordpressというディレクトリが自動的に作成され、そこにアップロードされます。
CocoaSpaceではUpload a fileを選択しました。
STEP 2:
User mappingでインポートする記事の投稿者を決定します。Create a userを選択すると新規にDrupalユーザが作成され、そのユーザを投稿者とすることができます。
投稿者とブログをインポートするコンテンツタイプを決定します。
[Next]ボタンを押して次の画面に遷移すると、その新規のユーザのユーザ名とEメールアドレスの入力を求められます。
STEP 3:
OptionsでWordPressのブログ記事をDrupalのどのコンテンツタイプにインポートするかを選択できます。WordPressの"ページ"は自動的にDrupalのpageタイプ二インポートされます。動作確認していませんが、Create path aliasesにチェックを入れるとWordPressで使用していたエイリアスが受け継がれるようです。
入力項目はこれだけです。後はインポートが成功することを祈るだけです。
インポート後
実際にインポートされたものを確認されて改行の訂正、ボキャブラリ名の訂正などを適宜行ってください。
インポートされた記事を見ると改行が反映されていませんよね?Wordpress Importが作成するWordpress formatという入力書式で改行コンバータを有効にすることで修正できます。
他のCMSからDrupalへの移行 - その他の選択肢
Wordpress Importより少々複雑なプロセスを踏みますが、より柔軟性があり、パワフルな比較的新しい選択肢として、Migrate、Table Wizard、Views、Schemaを使うという方法があります。今回のようなWordPressからDrupalの移行に限らず、その他のCMSからの移行にも使えます。従来からあるNode import、User Import、Taxonomy import/export via XMLなどのインポートツールに代わる方法として注目されているようです。
参考になるページ:
Drupal data imports with Migrate and Table Wizard | Lullabot(英語)

コメントを追加