ニッチなCMSとAWS徒然日記

WordPressからmicroCMSへの移行〜データ・設計・インポート編

このブログと家族のブログのシステムをWordPress(Shifter)からmicroCMSに移行しました。

公式ドキュメントやブログを参考にデータ・メディアの移行とフロントエンドの開発を行いましたので、何回かに分けてポイントになった点を紹介していきたいと思います。

移行元のWordPress側の構成

個人ブログですので、割とシンプルな構成です。

  • 著者は一人
  • 投稿のみ。固定ページ、カスタム投稿タイプは使用していない
  • カテゴリ、タグ、アイキャッチ画像あり。
  • Googleタグマネージャーを使っている(Googleアナリティクス連動)
  • Googleアドセンスで広告を入れている
  • robots.txtはWordPressデフォルトのものを利用
  • XMLサイトマップ、SEO関連のタグはYoastSEOを利用。
  • YoastSEOの機能で一部のアーカイブの停止、メディアの詳細ページの停止を行なっている
  • 投稿本文内にX(Twitter)やYoutubeの埋め込みあり
  • パーマリンク構成は/年/月/日/スラッグ

CMSを移行する場合、元のサイトの構成や機能、パーマリンク(URL)の構成の洗い出しが大事です。データやメディアの移行だけでは解決できない機能の追加開発やURLが変更になる場合はリダイレクトの設定が必要となります。

特にWordPressはプラグインをインストールし、ダッシュボードから設定することでサイト運用者がコードを書かなくても実装できる機能が多くあります。
これらのプラグインと同等の機能が移行先でも同じように運用できるとは限りませんので、移行の計画や開発するための設計が大事となってきます。

データ設計

事前にmicroCMSのAPIでカテゴリ、タグや投稿で利用している項目など、データに合わせてAPIもしくはカスタムフィールドを作成する必要があります。
投稿(ブログ)で記事とカテゴリ、タグを紐付けたい場合、ブログのAPI設定でこれらを複数コンテンツ参照として設定しておきましょう。

この辺りの基本的な設計は公式ブログで紹介されています。

WordPressからmicroCMSへ移行する前に考えること
https://blog.microcms.io/wordpress-to-microcms-tutorial-preparation#h7330e27836

ここでは公式ブログで紹介されている以外に、これがあったら便利と思った項目を記載します。

親カテゴリ、子カテゴリ

WordPressではカテゴリ(ターム)の階層化ができますが、microCMSでは制約があります。直感的なUIでの管理ではなくなることやAPIを2回呼び出すようになるなど、留意が必要です。

親カテゴリ、子カテゴリは設定できますか?
https://help.microcms.io/ja/knowledge/parent-child-category

抜粋

WordPressは投稿本文の最初から指定文字数までを自動抜粋するほか、区切りを入れることのできるmoreタグ、本文とは別の任意のテキストを設定できる抜粋欄があります。
WordPressの抜粋はテーマによっては投稿一覧に利用されたり、SEOプラグインでディスクリプションとして利用されます。

microCMSに自動で抜粋を作成する機能はなく、ブログとして作成したAPIにも抜粋の入力欄はないので、WordPressと同等に抜粋を機能させたい場合はAPIへの追加やフロントエンド側で取得した本文を加工する必要があります。

SEO関連の入力枠

WordPressプラグインを利用した場合、投稿タイトルや本文、アイキャッチ画像がOGPに自動で利用されますが、個別に設定できるように入力枠が用意されているケースもあります。microCMSでも同等に設定したい場合はSEO専用の入力枠(API)が必要となります。

ターム(カテゴリ、タグ)の説明

WordPressではSEOのディスクリプションとして利用するプラグインが多いです。
特にタームのアーカイブをランディングページのようにする場合は説明欄のほか画像の入力枠なども追加した方が良いでしょう。

カスタムメニューやウィジェット、プラグインで設定していた項目

ナビゲーションやバナー、関連記事、広告、最新記事へのリンクなど、WordPressのカスタムメニューやウィジェットで設定していた場合、同等の機能はmicroCMSにはありません。

これらを変更する頻度が低ければフロントエンド側で直接HTMLタグなどでコードを記述しても問題ないとは思います。
更新頻度がそれなりにあり、かつノーコードでこれらの内容(表示)を変更したい場合はmicroCMS側に管理用のAPIを作成する必要があります。

お問い合わせフォームやPHPを利用した動的コンテンツ

Shifterでも同様ですが、microCMSではこれらの動的コンテンツは動作しません。
外部サービスを利用しましょう。

CSVによる記事の移行

移行手段

今回、記事とメディアの移行にはCSVとメディアの手動アップロード、手動での差し替えで対応しました。
メディアの差し替えを手動にしたのは、WordPressのショートコードで表示しているケースがあるため、記事の確認をしながら作業したかったことに加え、古い写真は掲載をやめたかったためです。

CSVを選定した理由はWP All Exportプラグインを利用すればCSVの書き出しが容易であること、有料版を使えばカテゴリやタグの書き出しも行えるからです。

microCMSへのインポート用のCSVフォーマットはサンプルが配布されているので参考にしてください。
基本的にCSVのヘッダー行をmicroCMS側のフィールドID(名)に合わせばOKです。

WP All Export
https://ja.wordpress.org/plugins/wp-all-export/

また、公式から下記の記事が出ていますので、こちらを参考に移行を行っても良いと思います。

WordPressからmicroCMSへの移行を支援するAgent Skillを公開しました
https://blog.microcms.io/microcms-wordpress-migration-skill

WordPressからmicroCMSにコンテンツを移行するチュートリアル【準備編】
https://blog.microcms.io/wordpress-to-microcms-tutorial-preparation#h7330e27836

WordPressからmicroCMSにコンテンツを移行するチュートリアル【実行編】
https://blog.microcms.io/wordpress-to-microcms-tutorial-execution

チュートリアルを参考に、実際にWordPressからmicroCMSへコンテンツを移行してみた
https://blog.microcms.io/wordpress-to-microcms-migration

WordPressの各機能・プラグインをmicroCMSで実装する方法
https://blog.microcms.io/wordpress-plugins-in-microcms#h603d0a0729

なお、移行前にAll-in-One WP Migration and Backupプラグインを利用して記事の他にメディアやプラグイン、テーマも含めたバックアップを作成しておくことをお勧めします。

書き出したCSVでチェックしておくべきところ

ここでは追加で気をつける点を記載します。

1. WordPressのスラッグ

WordPressの投稿やカテゴリ、タグのスラッグをパーマリンクで利用している場合、microCMSのコンテンツIDでそのまま利用できるよう、CSVの書き出しとヘッダのチェックをしておきましょう。

2. 複数選択可能なカテゴリやタグ

microCMS側で複数選択可能にしておけば、CSV内でカンマ区切りにしておくとインポートできます。ただカテゴリは階層にならないので、カテゴリ・タグの付け替えを行なっています。

3. アイキャッチ画像

値はURLのテキストになります。事前にmicroCMSにアップロードするかURLで参照可能な外部のストレージを利用し、そのURLを入力しましょう。

4. カスタムフィールド

今回は対象ではありませんでしたが、WordPressでカスタムフィールドの値をIDやオブジェクトで保存していた場合はそのままのテキストとしてインポートされます。CSVを書き出す時に変換するか、インポート後に内容を確認しましょう。

5. 公開日時(publishedAt)

microCMSでは公開日時(publishedAt)をCSVでインポートできません。とはいえ公開日時の表記のほか構造化データなどで利用する値でもあります。

公開日時や更新日時を移行したい場合は、APIスキーマとして作成しインポートを行い、フロントエンド側で適宜参照先を変更するようにしましょう。

6. ショートコード

ショートコードは設置されたページがWordPress上で表示されるタイミングでPHPが動作する動的コンテンツのため、ショートコードはデータベースに保存されているテキストのままインポートされます。ギャラリーショートコードなど、画像のURIではなくIDで指定されている場合はどんな画像が配置されていたかデータ上で確認できないので、インポート後に手動で差し替えましょう

インポートされたデータ

microCMSにインポートされたデータはステータスが下書きとなります。

公開前に各記事の内容やカスタムフィールドが問題なく取り込まれているか、カテゴリやタグ、画像類が紐づけられているのかの確認をして公開に変更しましょう。


次回は配布されているテンプレートを元に追加開発した内容を紹介します。