※ この記事は2021年baserCMSアドベントカレンダーの記事です。
WordPressからbaserCMSへ記事データを移行するbaserCMSのプラグインを作成しました。
実際にこのブログをWordPressからbaserCMSに移行したときに使っていますので、よかったら参考にしてください。
データ移行時の注意点、気になったところなどをまとめています。
ソースコード
ソースコードはGitHubで公開中です。
https://github.com/kaburk/BcWpImporter
ソースをgit clone、または、
https://github.com/kaburk/BcWpImporter/releasesよりzipファイルをダウンロードしてください。
プラグインのインストール方法・使い方
- 圧縮ファイルを解凍後、{BASERCMS}/app/Plugin/BcWpImporter に配置します。
※(githubからzipファイルをダウンロードした場合はフォルダ名が変わってしまう場合があるので、BcWpImporter に変更してください。) - 管理システムのプラグイン管理に入って、表示されている BcWpImporter プラグイン を有効化して下さい。
- 設定画面よりWordPressのXMLデータを読み込ませることで、baserCMSのブログ記事に移行することができます。
データ移行の流れ
おおまかなデータ移行の流れとしては、
- WordPress管理画面から投稿データをXML形式でエクスポートする
- baserCMS管理画面にてBcWpImporterプラグインでXML形式のファイルを読み込む
- wp-content/uploads/ フォルダ内のWordPress画像をbaserCMSのfilesフォルダ内にコピーする
- データ移行後は、必要に応じて記事個別にスタイルや、データの調整を行う
という感じです。
1.WordPress管理画面から投稿データをXML形式でエクスポートする
WordPress 管理画面 から「ツール」→ 「エクスポート」を選んでください。
エクスポートの対象としては「投稿」を選択してください。
他の各オプションは必要に応じて設定します。特に指定がなければそのままでOKです。
下部の「エクスポートファイルをダウンロード」ボタンを押して XMLファイルをダウンロードしてください。
2.baserCMS管理画面にてBcWpImporterプラグインでXML形式のファイルを読み込む
baserCMS管理画面にて「プラグイン管理」→「データインポート」を選択します。
ブログの指定:インポート先のブログを指定してください。
ブログ記事の初期化:既にインポート先のブログに記事がある場合は、チェックを入れると指定されているブログの記事をクリアしてから取り込みます。チェックを入れない場合は、そのまま記事が追加されます。
ファイル選択部分にて先程WordPress管理画面でダウンロードしたファイル(XML形式のファイル)を選択します。
最後に「アップロード」ボタンを押すと、記事を取り込みます。
3.wp-content/uploads/ フォルダ内のWordPress画像をbaserCMSのfilesフォルダ内にコピーする
WordPress の画像がアップロードされているフォルダの内容
{WordPress インストールフォルダ}/wp-content/uploads/
を、
{baserCMS インストールフォルダ}/files/wp-content/uploads/
にコピーします。フォルダがない場合は手動で作成してください。
4.データ移行後は、必要に応じて記事個別にスタイルや、データの調整を行う
以上でデータ移行についてはおおよそ完了です。
ただ、baserCMSで利用しているテーマによっては、そのままではブログ記事データの表示崩れなどが起こると思いますので、個別に調整が必要かと思われます。
特にWordPress側でプラグインなどを使っている場合やショートコードなどが入っている箇所([xxxxxx xxxx ] のような記述)などです。
ここらへんはサイト個別に状況が異なると思いますので、各自で対応してください。
データ移行時の注意点
画像について
記事内の画像は、 WordPress の画像がアップロードされているフォルダの内容
{WordPress インストールフォルダ}/wp-content/uploads/
を、
{baserCMS インストールフォルダ}/files/wp-content/uploads/
にコピーすることで baserCMS のブログ記事内でも表示する想定にしております。
パス名やファイルの位置は必要に応じてソースコードを書き換えて利用したいフォルダに変更してご利用ください。
カテゴリ、タグについて
WordPress の投稿記事では複数のカテゴリを設定できますが、 baserCMS では仕様上、ブログ記事にカテゴリは1つしか設定できません。 その為、データ移行時には最初のカテゴリ以外は移行できません。
また、ブログタグについても移行可能ですが、 baserCMS の仕様上複数のブログでタグは共通になります。
どうしてもWordPressのカテゴリすべてを「移行したいときは、WordPress側でカテゴリ→タグ変換を行った上で移行することで一応は可能ですが、カテゴリやタグの状態によってはうまく行かないかもしれません。
文字数オーバーについて
記事タイトルや、カテゴリ名、タグ名などが長すぎる場合は、 baserCMS 側で取り込めるサイズで後半が自動でカットされます。
BurgerEditorの対応について
BurgerEditor を利用している場合、そのままデータ移行すると、管理画面で記事編集時に記事データをアップデートするようなアラートが表示されてしまいます。
アップデートボタンを押して記事を再度保存しなおせばアラートも消えるのですが、記事数の数が多いときはそうはいきません。
それに、まとめて更新したり、アラートをでないようにするような機能がBurgerEditorにはないようでした。
そこで、データ移行するときに、BurgerEditorの「1カラムテキスト」に記事データを入れるようにHTMLタグを追加してからデータを移行するようにするとこの問題は一応回避できます。
ソースコードにコメントで入れているので、必要に応じ手書き換えてタグを追加するようにしてみてください。
このあたりを上手くカスタマイズしたりすると元のデータを各ブロックに分割して記事データを作成したりもできたりもしますので、やってみるのもいいかと思います(もちろんうまく行かない場合もありますが…)。
TODO
- ブログ記事のアイキャッチデータの対応
- 固定ページやカスタム投稿タイプなどにも対応する
お約束
※ データ移行時は必ず事前のバックアップを行ってから実行してください。
※ カスタマイズされた WordPress などには対応しておりません。 必要に応じてソースコードを見てご自身でカスタマイズしてください。
※ データを完全に移行できることを保証するものではありません。自己責任でお願いします。
ご自身でデータ移行が難しい場合は、お問い合わせよりご相談いただければ有償にて対応も可能です。
baserCMS関連書籍
|