eater

core left after all gone

中島 道(なかじまとおる)

メールアドレス

  • 日記

WordPressで将来のスケジュールやイベントが管理できるプラグイン“Event Calendar”

2009 年 8 月 18 日

eventcalendar

WordPressでサイト構築することが多いんですけども、予定表のような物を設置したいという要望がありまして、いろいろと調べてみました。途中ハマったとこもあったりで、メモがわりに書いときます。

まず、WordPressはBlogツールのため、投稿すれば即記事としてアップされます。

また「予約投稿」を使えば、未来の指定した日時に公開ということも出来ます。(過去もできますけど)

ただ、「予約投稿」で未来の日時を指定すると、当然ですけどその日時になるまで記事は表示されません。

要するに「今、公開」か「指定した日時に公開」しか選べないので、「将来のものを」「今公開する」というイベントカレンダーのようなものをWordPressで作るというのは出来そうで出来ないのです。(中身を改造すれば別)

今回やりたかったのは、

  • 将来の日付で投稿した記事を「今」表示できる
  • その予定をカレンダー形式で表示できる
  • カレンダーで、予定がある日にリンク。クリックで記事(予定の詳細)が表示される

そこで、WordPressのプラグインを探してみることに。

WordPressでは機能を拡張する仕組みとして「プラグイン」ってのがありまして、これが探せばいっぱいあってですね。たいていのことはプラグインで補えてしまいます。まぁ細かいことを言い出すと、相性があったり、アップデートが大変だったりそもそも無秩序に作られてるものなので、統一感があるわけでもなく…。

それはそれとして、本題っす。

探したらいろいろ見つかったのですが、今回使ったのは「Event Calendar」っていうプラグイン。

「Event Calendar」プラグインのサイトはこちら

似た様な名前のプラグインがいくつかあって紛らわしいんですが、このプラグイン、それなりにいろんなサイトで情報があったので導入することにしました。

導入方法、使い方はこちらのサイトがわかりやすいので参考にしてください。

WordPressプラグインでイベントスケジュール表示ができる「Event Calendar」 | WordPress & Business メモ

画面での表示は、以下のコード挿入することで出来ます。

カレンダーを表示したい場合は以下のコードを表示したい箇所に挿入。
<?php ec3_get_calendar(); ?>

リスト表示したい場合は以下のコードを表示したい箇所に挿入。
<?php ec3_get_events(5); ?>
※()内は表示する件数

以下、試した環境および設定

  • カテゴリ名:予定表
  • カテゴリスラッグ:schedule
  • カテゴリID:3

※カテゴリIDはカテゴリを作った順に連番で設定されます。

そして、この「予定表」カテゴリ用のテンプレートとしてカテゴリIDにもとづき
「category-3.php」を作成。そのファイルに上記のコードを挿入。

また、WordPressのパーマリンク設定で、URIにカテゴリスラッグを含める設定にし、以下の様なURIでアクセスできるように。

例)http://○○○○.com/schedule/

結果、カレンダーもリスト表示も上手くいったんですが、ちょっと困ったことがあってハマってしまいました。

うちの環境だけかもしれないですけど、カレンダーに表示される日付をクリックしても記事(予定の詳細)ページが表示されずに、元の画面のままカテゴリーページが表示されてしまうのです。

状況としては、カレンダーの日付部分はスケジュールとして投稿した日付になってます。
例えば「9月1日」に予定を投稿したとしたら、カレンダーの9月1日にリンクが貼られ、URIも「http://○○○○.com/?m=20090901&cat=3」となります。「20090901」の部分が投稿した「予定」の日付になってます。

とにかく、日付をクリックしても記事(予定の詳細)ページを見ることができない!

これは困りましたねー。

そこで、いろいろいじってみたのですが、URI末尾の「&cat=3」を消すと日別アーカイブページが表示されることに気づき、日別アーカイブが表示できれば、その日の投稿一覧が表示されるので、今回やりたかったことはこれで実現できます。

ということで「&cat=3」が無い状態でリンクを出力できないかと考え、いろいろ探して該当部分を見つけました。

いやー、長かった。ここからがホントの本題。

「Event Calendar」プラグイン、date.phpの179行目〜180行目。

. zeroise($this->day_num, 2)
. “&amp;cat=” . $ec3->event_category;

この部分を以下のように変更。

. zeroise($this->day_num, 2);

180行目の

.”&amp;cat=” . $ec3->event_category;

この部分で「&cat=3」を出力してるんですねー。

いやー、解決するのに2日かかりましたわ。あと記事長過ぎますねすみません。

あ、ちなみにPHPは素人なので、もっといい方法があるかもしれません。あしからず。

トラックバックURI

コメント / トラックバック 2 件

  1. くろ。 より:

    すごい。
    くろ。ブロでは使いませんが
    何かの際には是非。
    thanx a million.

    これに乗っかって、
    聞きたいことある。
    pageの、予約投稿。

    公開したページを、
    予約保存したい場合の
    プラグインご存知?

    直接聞くわ!

  2. [...] WordPressで将来のスケジュールやイベントを管理する [...]

コメントをどうぞ