はじめに

長年利用してきたWordPress プラグイン「XO Event Calendar」のダウンロードが停止(2026年1月9日現在)となり、今後の継続利用に不安が生じました。
XO Event Calendarはシンプルですが、内部構造が複雑で、カスタマイズしづらいという側面もありました。
この記事では、「XO Event Calendar」の仕様を参考にしつつ、必要な機能だけを持つ独自イベントカレンダープラグインを自作した過程について、設計方針と実装内容を整理して紹介します。
XO Event Calendarの仕様
XO Event Calendarでは、カスタム投稿タイプxo_eventを用い以下の情報をメタボックスで指定し、カスタムフィールドとして保存していました(表1参照)。
また、イベントの分類には、カスタムタクソノミーxo_event_catが用いられています。
さらに、カレンダー表示においては、<table>タグを多用してイベントの枠線を描画するなど、HTML構造が複雑です。
| 項目 | フィールド名 |
|---|---|
| 開始日 | event_start_date |
| 開示時 | event_start_hour |
| 開始分 | event_start_minute |
| 終了日 | event_end_date |
| 終了時 | event_end_hour |
| 終了分 | event_end_minute |
| 終日フラグ | event_all_day |
| ショートタイトル | short_title |
独自プラグインの仕様
今回作成した独自プラグインでは、HTML構造を極力シンプルにし、表示上の表現は主にCSSによって制御しています。
カレンダー表示

カレンダー表示については、XO Event Calendarと同様に、前月および翌月への移動操作を行った際に、ページ全体ではなくカレンダー部分のみを再描画する仕様としています。
XO Event Calendarには前後年移動ボタンがなく操作性に課題があったため、本プラグインではこれを追加しています(図2参照)。
カレンダーの表示方法については、ウィジェットやブロックは用意せず、ショートコードのみによる実装としています。
イベント一覧表示

XO Event Calendarと同様に、ショートコードを使ってイベント一覧を表示できます。
終了したイベントは自動的に一覧から除外されます(図3参照)。
イベント情報の入力

カスタム投稿タイプ my-eventを作成し、管理画面のメタボックスからイベントの開始日時(event_start)および終了日時(event_end)を入力構成にしています。
あえて管理項目を最小限に絞り、日時の管理に特化させているのが特徴です(図4参照)。
また、投稿の公開日を開始日時に同期させる仕組みを導入しました。
これにより、開始日時を未来に設定した場合でも「予約投稿」にならず即座に公開されるため、フロントエンドのカレンダーなどへ即座に反映させることが可能です。
さらに、毎週決まった曜日に開催されるようなイベントにも対応しています。
「繰り返しスケジュール」機能を利用することで、任意の曜日と時間枠を複数組み合わせて柔軟に登録・管理できます。
カテゴリー(タクソノミー)の入力

イベントの分類には、カスタムタクソノミーmy_event_catを使用しています。
また、XO Event Calendarと同様に、カラーピッカーを用いてイベントごとの背景色を設定できる仕様としています(図5参照)。
休日の入力

休日の設定については、XO Event Calendarに近い挙動を再現する仕様としています(図6参照)。
データ移行と今後の拡張性
今後の運用を見据え、XO Event Calendarの使用を終了し、既存データの移行を行いました。
XO Event Calendarで管理していた約1,600件のイベントデータについては、プラグイン「WP All Export」を用いてCSVファイルとして抽出しています。
その後、プラグイン「WP All Import」を使ってCSVファイルをインポートしようとしましたが、カスタムフィールドの反映はPro版が必要であることが判明しました。
そこで、抽出したCSVデータは、本プラグインのデータ構造に合わせて変換する簡易ツールを作成し、独自イベントカレンダープラグインへインポートしました。
これにより、過去のイベントデータを失うことなく、円滑な移行を実現しています。
また、本プラグインは機能を必要最小限に抑えた設計としているため、将来的な拡張が容易である点も特徴です。
さいごに
プラグイン「XO Event Calendar」の配布終了を契機として、独自イベントカレンダープラグインを作成した経緯と、その設計方針および実装内容について整理しました。
XO Event Calendarの仕様を参考にしつつ、必要最小限の機能に絞ることで、シンプルで保守性の高い構成を実現しています。

