「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
イベントカレンダープラグイン(その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>
