baserCMS5 のコンテンツを WordPress 向けの WXR(WordPress eXtended RSS)として書き出すプラグイン「BcWpExport」を作りました。
管理画面から出力対象を選んで実行すると、WordPress の標準インポート機能で読み込める WXR ファイルを生成・ダウンロードできます。
株式会社キャッチアップで働くエンジニアのブログです。
baserCMS5 のコンテンツを WordPress 向けの WXR(WordPress eXtended RSS)として書き出すプラグイン「BcWpExport」を作りました。
管理画面から出力対象を選んで実行すると、WordPress の標準インポート機能で読み込める WXR ファイルを生成・ダウンロードできます。
WordPress から baserCMS5 へ取り込む BcWpImport とは逆方向のプラグインです。
サイト移行では「WordPress から baserCMS5 へ」という流れだけでなく、検証や比較、別環境への受け渡しのために「baserCMS5 のコンテンツを WordPress 形式で書き出したい」場面もあります。
たとえば、
といった用途を想定して BcWpExport を開発しました。
BcWpExport は、baserCMS5 の固定ページやブログ記事を、WordPress 向け WXR ファイルとして書き出すプラグインです。
WXR は WordPress の標準インポート機能で利用される XML 形式です。
BcWpExport では、baserCMS5 側のコンテンツを収集し、WordPress の post や page、category、post_tag などに対応する形式で WXR を組み立てます。
生成した XML ファイルは、WordPress 管理画面の ツール → インポート から読み込めます。
初版では、次のデータを対象にしています。
| baserCMS 側 | WXR / WordPress 側 | 備考 |
|---|---|---|
| 固定ページ | page | 親子関係・スラッグ・公開状態を可能な範囲で維持 |
| ブログ記事 | post | 投稿日・更新日・本文・抜粋・スラッグ・著者を出力 |
| ブログカテゴリー | category | 階層構造を維持 |
| ブログタグ | post_tag | タクソノミーとして出力 |
| 投稿者 | author | WordPress 側での再割当を前提とした最小情報 |
| 本文内画像 | post_content 内 URL | URL が有効な環境での移行を前提 |
一方で、初版ではメールフォーム、ウィジェットエリア、カスタムコンテンツ、コメント、添付ファイル本体の同梱、SEO プラグイン固有設定などは対象外としています。
まずは WordPress の標準インポーターで扱いやすい、ページ・投稿・分類情報を中心にしています。
BcWpExport では、出力対象を選び、条件を指定して WXR ファイルを生成できます。
wp:post_id / wp:post_parent の出力_thumbnail_id postmeta を付与単純に全件を書き出すだけでなく、ブログ・カテゴリー・著者・日付範囲などで絞り込めるようにしているので、移行検証や部分的なデータ受け渡しにも使いやすくしています。
エクスポート時には、次のような条件を指定できます。
| 条件 | 説明 |
|---|---|
| 出力対象 | 全件 / ブログ記事のみ / 固定ページのみ |
| 公開状態 | 公開のみ / 非公開を含む / 下書きを含む |
| ブログ | 取込元ブログを絞り込む(ブログ記事のみ対象) |
| カテゴリー | 指定カテゴリーに属する記事のみ出力 |
| 著者 | 指定ユーザーが投稿した記事のみ出力 |
| 日付範囲 | 指定した期間内の記事のみ出力 |
たとえば、特定のブログだけを WordPress に持っていきたい場合や、公開済みの記事だけで検証したい場合に使えます。
WXR の生成時には、次のようなオプションを用意しています。
| オプション | 説明 |
|---|---|
| URL 変換 | 本文中のルート相対 URL を絶対 URL へ変換する |
| メディア URL 出力 | アイキャッチ画像を attachment post_type として WXR に含める |
| サイトメタ情報 | channel 要素へサイト情報を付与する |
| XML 整形 | インデント付きで pretty print する |
本文中の画像やリンクは、移行後の確認ポイントになりやすい部分です。
そのため、相対 URL を絶対 URL に変換するオプションや、アイキャッチ画像を WordPress 側の attachment として扱いやすくするための出力を用意しています。
生成した WXR ファイルは、WordPress の標準インポート機能で読み込めます。
.xml ファイルを保存する画像などのメディアファイル本体は WXR に同梱されないため、元サイトの URL が有効な状態でインポートするか、必要に応じて WordPress 側で一括置換・メディア移行を行う想定です。
大量コンテンツの場合、WordPress Importer 側でタイムアウトすることもあるため、その場合は外部プラグインの利用も検討してください。
管理画面では、次のメニューから操作できます。
/baser/admin/bc-wp-export/wp_exports/index条件を指定してエクスポートを実行し、完了後に WXR ファイルをダウンロードする流れです。
過去のエクスポート履歴や生成ファイルも一定期間保持されるため、再ダウンロードや履歴管理もしやすくしています。
plugins/BcWpExport/ に本プラグインを配置する設定値は config/setting.php で変更できます。
| キー | 初期値 | 説明 |
|---|---|---|
BcWpExport.jobExpireDays |
3 |
生成した WXR ファイルの保持日数 |
BcWpExport.batchSize |
100 |
内部バッチ処理の単位件数 |
このプラグインは、たとえば次のようなケースを想定しています。
サイト移行では、移行元・移行先の都合によって、必要になるデータ形式が変わります。
WordPress が標準で扱える WXR に変換できるようにしておくことで、検証や受け渡しの選択肢を増やせると思います。
BcWpExport は、baserCMS5 のコンテンツを WordPress 向け WXR として書き出すプラグインです。
固定ページ、ブログ記事、カテゴリー、タグ、投稿者などを WordPress の標準インポート機能で扱いやすい形に変換します。
BcWpImport とあわせて使うことで、WordPress と baserCMS5 の間で WXR を使った移行・検証の流れを作りやすくなります。
すべてのデータを完全に移行するものではありませんが、標準的なコンテンツ移行の土台として役立つものになればと思っています。