Biz Calendar にイベント情報を追加する

WordPress

WordPressにイベントカレンダーを追加するには、いろいろなプラグインがあります。

  • All-in-One Event Calendar
  • The Events Calendar
  • My Calendar
  • Event Organiser

なんかがいい感じですが、クライアントさんにお渡しするには、シンプルでわかりやすい必要があります。

ほとんどのイベントカレンダーが日本語化されていないので、そもそもそこがハードルになります。
その点、My Calendarは日本語なんですが、カレンダーそのものは専用ページに出力されるようになっていて、テンプレート内での出力ができなかったりするんですよね。

いろいろ試したのですが、以前からお世話になってる、Biz Calendar さんがシンプルイズベストでやっぱりいいな~と思うのです。

https://wordpress.org/plugins/biz-calendar/
http://residentbird.main.jp/bizplugin/plugins/bizcalendar/

それに、Biz Calender はウィジェットしか使えない、と思われてますけれど、実はテンプレート中にも配置できます。
たとえば、page.phpなんかに、

と書き加えておくと、それがカレンダーに早変わり! (ただし、一つの画面に一つだけしか表示できないので、サイドバーにもBiz Calenderをおいている場合は、どちらかが表示されません。)

見た目もシンプルで、デザインもCSSで上書きすればわりと自由に変更できますし。
でも、イベントは固定ページで人力で作らないといけないので、イベントカレンダーとしてはイマイチ。

というわけで、投稿で「イベント」カテゴリを選択したら、Biz Calendarにリンクが表示されるように、Biz Calendar本体を改造します。  

カスタムフィールドの用意

まずは本体改造の前に、カスタムフィールドを用意します。

ここでは、手軽にAdvanced Custom Fields プラグインを利用することにします。 http://www.advancedcustomfields.com/

作成するカスタムフィールドは、二つ。
まずは、Biz Calenderに表示するイベントのタイトル。
フィールド名はevent-titleで、フィールドタイプはテキストです。

1507030001 続いて、イベント日をevent-dateというフィールド名で、フィールドタイプはテキストエリアで作成します。 フィールドラベルや、ヒントなんかは、適当に入れておきます。1507030002 位置は、「投稿タイプ 等しい post」 でOKです。1507030003

イベント用のカテゴリの用意

次に、投稿にカテゴリを用意します。 名前はイベントで、スラッグはeventとします。1507030004

プラグイン本体の編集

さて、プラグインBiz Calendar本体の改造に入ります。
まずは、biz-calendar.php の class BC{ } の中に、以下の関数を追加します。

この関数は、上述で追加したカテゴリの投稿を取得して、追加したカスタムフィールドの値を配列にして返します。

次に、同じくbiz-calendar.php の localize_js() 関数に、

を追加します。5行目です。

 こんどは、calendar.jsを編集します。

まずは、var getDateType = function(date, day) に以下の6-12行目を追加します。
ここで、カレンダーの日付の日に、投稿で設定されたイベントがあるかどうかを取得します。
もともと、Biz Calender にはイベントを設定できる機能があるのですが、投稿のイベントカテゴリを優先するようにしています。

次に、var getDateTag = function(date, day) に以下の7~18行目を追加します。
ここで、カレンダーの日付と投稿のイベントが紐付けられます。

 

これで、投稿で作成した記事をイベントとしてカレンダーに表示させることが出来るようになります。 Biz Calender にイベント表示
(CSSもいじってます。)

実際に投稿してみる

投稿をひらくと、以下の項目が出てきます。1507030006

イベント日は、2015-07-07 のように 半角で年月日を - で区切って入力します。
15-7-7 のように、西暦二桁を省略したり、 0 を省くことは出来ません。
複数行で入力することで、複数日を設定することが出来ます。
イベントタイトルを設定すると、そのタイトルが投稿ページヘのリンク付きで、カレンダーに表示されます。

最後に

本当は、Biz Calendarにフックがついていたら利用したかったのですが、なかったので本体そのものを改造することに。
Biz Calenderにフック追加してもらうか、いっそ、イベントを表示できるようにしてくれたらなぁ。なんて思いつつ。

当然ですが、プログラムそのものを改変してしまうので、プラグイン本家のアップグレードで上書きされてしまう点に注意が必要です。
なので、プラグインのフォルダ名そのものを、biz-calendar 以外に変えてしまうほうが安全ですね。

+3
タイトルとURLをコピーしました