「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
イベントカレンダープラグイン(その8・イベントのアーカイブリストの静的出力)
イベントカレンダープラグインでは、イベントを月毎などで集計して、その件数等を出力することもできます。
1.アーカイブリストを出力するテンプレートタグ
アーカイブリストを出力するテンプレートタグとして、以下の3つがあります(いずれもブロックタグ)。
テンプレートタグ | 内容 |
---|---|
MTPastEventArchiveList | 終了したイベントを年/月/日単位で集計して件数等を出力 |
MTFutureEventArchiveList | 今後開催予定のイベントを年/月/日単位で集計して件数等を出力 |
MTCurrentOrFutureEventArchiveList | 現在開催中または今後開催予定のイベントを年/月/日単位で集計して件数等を出力 |
ブロックの中では、MTArchive系のテンプレートタグを使って、アーカイブの情報を出力することができます。
ただし、MTArchiveLinkタグは使用できません(現状では、静的なイベントアーカイブページを出力する機能がありません)。
archive_typeモディファイアで、集計する際の単位を指定します。
archive_typeモディファイアに指定できる値は以下の通りです。
値 | 集計の単位 |
---|---|
Event-Startdate-Daily | イベント開始日の日別 |
Event-Startdate-Monthly | イベント開始日の月別 |
Event-Startdate-Yearly | イベント開始日の年別 |
Event-Period-Daily | イベント期間の日別 |
Event-Period-Monthly | イベント期間の月別 |
Event-Period-Yearly | イベント期間の年別 |
Event-StartdateーXXXとEvent-Period-XXXの違いは、複数の月等にまたがるイベントのカウントの方法です。
Event-StartdateーXXXでは、イベントの開始日が属する月などでのみカウントします。
一方、Event-Period-XXXでは、イベントの期間が属するすべての月などでカウントします。
例えば、開始日が2014年4月で、終了日が2014年6月のイベントがあるとします。
この状態で、Event-Startdate-Monthlyで月別アーカイブリストを出力すると、そのイベントは2014年4月でのみカウントされます。
一方、Event-Period-Monthlyで月別アーカイブリストを出力すると、そのイベントは2014年4月/5月/6月のそれぞれでカウントされます。
なお、Event-Period-XXXモディファイアは、動作がかなり重いので、使うことはあまりお勧めしません。
2.指定できるモディファイア
上記の3つのテンプレートタグでは、以下のモディファイアを指定することもできます。
モディファイア | 動作 |
---|---|
lastn="○" | 開始日時が新しいイベントのアーカイブから順に○件出力します。 |
firstn="○" | 開始日時が古いイベントのアーカイブから順に○件出力します。 |
sort_order="ascend" | アーカイブリストを日時の古い順に出力します。 |
3.アーカイブ系テンプレートタグの入れ子
アーカイブ系テンプレートタグを入れ子にすることもできます。
例えば、以下のようにテンプレートを組むと、まず年単位で過去のイベントを集計して、各年のイベントの数を出力します。
そして、それぞれの年で月単位でも過去のイベントを集計して、各月のイベントの数を出力します。
<mt:FutureEventArchiveList archive_type="Event-Startdate-Yearly"> <mt:ArchiveListHeader><ul></mt:ArchiveListHeader> <li><$mt:ArchiveDate$>:<$mt:ArchiveCount$>件 <mt:FutureEventArchiveList archive_type="Event-Startdate-Monthly"> <mt:ArchiveListHeader><ul></mt:ArchiveListHeader> <li><$mt:ArchiveDate$>:<$mt:ArchiveCount$>件</li> <mt:ArchiveListFooter></ul></mt:ArchiveListFooter> </mt:FutureEventArchiveList> </li> <mt:ArchiveListFooter></ul></mt:ArchiveListFooter> </mt:FutureEventArchiveList>
4.アーカイブ系テンプレートタグとMTEntriesタグの入れ子
アーカイブ系のテンプレートタグのブロックの中に、MTEntriesタグのブロックを入れて、アーカイブごとのイベントの一覧を出力することもできます。
例えば、以下のようにテンプレートを組むと、過去のイベントの一覧を月毎にまとめて出力することができます。
<mt:PastEventArchiveList archive_type="Event-Startdate-Monthly"> <mt:ArchiveListHeader><ul></mt:ArchiveListHeader> <li><$mt:ArchiveDate$> <mt:Entries> <mt:EntriesHeader><ul></mt:EntriesHeader> <li><$mt:EntryEventStartDate$>~<$mt:EntryEventEndDate$> <$mt:EntryTitle$></li> <mt:EntriesFooter></ul></mt:EntriesFooter> </mt:Entries> </li> <mt:ArchiveListFooter></ul></mt:ArchiveListFooter> </mt:PastEventArchiveList>