はじめに
drupal7まではよかったのですが、drupal8になってcomposerが必須のようで・・・
composerインストールした環境ではこれまでの作業時間の何倍も時間を使いしかもリモート接続が切断してしまうことが度々でした。これじゃ何をどこまで完了したのかがわからず、何度も再実行しなければならず、drupal7からdrupal8へのmigrateでいろいろ不完全だったのもあるためどうせ手作業で修正しないといけないならwordpressへインポートしてからでもいいと考えこのたび、wordpressへ記事を移動しました。
drupal 8からのエクスポート
ノード の抽出
wordpressへインポートするにはまず、drupal8からコンテンツをエクスポートしなければなりません。エクスポートは記事とその中で使われている画像や動画などのメディアファイルが対象です。記事に関してはエクスポートにはRESTを使いViewsでXMLフォーマットに出力しました。エンティティではなく以下のフィールドをエクスポートしました。
- nid
- title
- カテゴリ
- タグ
- 作成日(インポーターにあわせてフォーマット変換が必要)
- 本文
- 画像URL(imagefieldのURL:複数)※未使用
nidはユニークな番号なので個々の識別に使用できます。
エクスポートの実行はコンテンツタイプごとにViewsを作成しXMLファイルの出力を行いました。
画像のURLも抽出しましたがインポートでは使用していません。
使用したモジュール
- RESTful Web Services
- Serialization
メディアファイルの移動
メディアファイルのURLを先ほどのXMLに含めることはできますが、drupalインポートプラグインのほとんどは有料版しか画像やカスタムフィールドには対応していません。
そのためディレクトリ配下のファイルすべてを一括で移動したのちwordpressに登録することにしました。
ファイル移動は普通にOSのコピーコマンドで行い、その後、Media SyncでWordpressに登録しました。また、メディアファイルの場所をデフォルトから変更してあります。
これだけの作業では記事内部の画像URLが変更できていませんのでリンク切れが発生しています。
wordpressへのインポート
wordpressへのインポートには WP ALL ImportのXMLファイルからのインポートで行いました。コンテンツタイプごとに作業を分けて行いましたが最終的には639記事すべてインポートできました。あとは記事内部の画像のリンク切れの修正です。今回このリンク切れを発見するために使用するプラグインがBroken Link Checkerです。
使用したプラグイン
- WP All Import
- Extend Media Upload
- Media Sync
- Broken Link Checker
WordPressにふれてみて
テーマはきれいなのが多いですがフリーでかつ自分でどこまでできるのか?と考えるとdrupalとの差は感じません。
理屈をわかっているだけdrupalのほうが分かりやすいです。
Wordpress標準のエディタにしてもブロック単位で入力していく点でdrupalで使用していたエディタの方が使いやすいです。
しかし、これは慣れの問題であり使いやすいようにカスタマイズできれば問題はありません。
アップデートの時間やメンテナンスにかかる時間、要するにcomposerを使わない分、短縮できているしいつ終わるかわからない状態で待つのはストレスでしかありませんのでそういう環境から脱出できただけでも今は満足です。
この後、リンク切れの修正作業がありますが、wordpressのプラグインを整備するついでに効率よくできる方法を考えてみようと思います。
お勧めプラグインといって使うかどうかもわからないプラグインを入れたりしない方が良いと思います。自分で必要な機能のプラグインだけを選別して導入すべきです。無駄に重くなったり不安定にならないようにするためにもそうしたほうが良いと思います。