プラグインEvents Manager(5.2.8)のicsファイルを改造する

CSオーガナイザーは、Events Managerというプラグインを使ってスケジュール機能を実現している。

実は、このプラグイン、GoogleカレンダーやiCal(Macのカレンダーソフト)に取り込むことができるicsファイルを公開している。
CSオーガナイザーの場合、下記のURLで取得できる。ただし、将来の予定のみ。

  • https://www.consadeconsa.com/calendar/events.ics

Googleカレンダーで取り込む方法は下記の通り。左側のメニューの「他のカレンダー」の所の「URLで追加」に上記のURLを入力する。

ところが、デフォルトのicsには問題があって、

(1)時間がずれてしまう。
(2)Googleカレンダーに取り込むと、CSオーガナイザーの予定のURLを取り込んでくれない。Macのカレンダーの場合は、取り込んでくれる。

(1)は大問題なので、Evenst Manager 5.2.8のソースファイルをのぞいてみる。icsを書き出しているソースは、templateのなかにあるical.phpというファイル。その中のtimezone関連の記述箇所を探す。

4行目の文章のget_option(‘timezone_string’)を直接、ローカル指定に変更した。Wordpressからtimezoneを直接読み込んでくれているはずなのだが、なぜかうまくいっていないみたいだったので、泥臭いが書き換えた。
この部分は、iCSファイル内の各イベントの時刻表記のTimezoneを制御している部分。

[php]
date_default_timezone_set( get_option(‘timezone_string’)); // set the PHP timezone to match WordPress
[/php]

[php]
date_default_timezone_set( ‘Asia/Tokyo’); // set the PHP timezone to match WordPress
[/php]

もう1箇所も変更。中盤の下あたりに、上記と同じ文章がある。同じように変更した。
こちらは、各イベントのタイトルに時刻が表示されているのだが、その時刻のTimezoneを制御している部分。

なんか、どろくさい改造だが、なととなく、うまくいった。

(2)については、EventsMangerは、各イベントのURLを、「URL:」という項目で出力しているのだが、どうもGoogleカレンダーでは、それを読み込んでくれない。Macのカレンダーは、それを読み込んでくれるのだが。

Googleカレンダーは、ics内のイベント情報に「DESCRIPTION:」という項があると、これをメモ欄に読み込んでくれる。URLファイル形式だと、自動でリンクの様にしてくれる。
そこで、ical.phpファイルの一番下の部分に各イベントの情報出力形式を記述してあるので、そこに「DESCRIPTION:」を追加して、URLを記述させるようにした。