「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
前後の日時を求めるプラグイン
MTQに「『公開日』の『7日後』の文字を表示したい」という質問が上がっていました。
そこで、このような処理を行うプラグインを作ってみました。
1.インストール
プラグインは以下からダウンロードします。
ダウンロードしたZipファイルを解凍すると、「plugins」というフォルダができます。
このフォルダを、Movable Typeのインストール先ディレクトリにアップロードします。
なお、このプラグインの動作テストは、Movable Type 5.14で行いました。
試してはいませんが、Movable Type 4以降なら動作するはずです。
2.MTDateDiffタグ
このプラグインをインストールすると、「MTDateDiff」というタグが追加されます。
以下のモディファイアを指定して、動作を決めます。
2-1.tag
前後の日時を求めたい日付系テンプレートタグの名前から、先頭の「MT」を除いたものを指定します。
例えば、ブログ記事の日時(MTEntryDate)の前後の日付を求めたい場合は、「tag="EntryDate"」と指定します。
2-2.ts
特定の日時を基準に、その前後の日時を求めたい場合は、「ts="年月日時分秒"」の形でその日時を指定します。
例えば、2012年6月22日12時34分56秒を基準にする場合だと、「ts="20120622123456"」とします。
なお、tagモディファイアとtsモディファイアは、どちらか1つを指定します。
両方を指定すると、tsモディファイアを使います。
また、どちらも指定しなかった場合は、再構築時点の日時を使います。
2-3.offset
前後する日時を指定します。
プラスの値を指定すると、基準の日時から後の日時を求めます。
また、マイナスの値を指定すると、基準の日時から前の日時を求めます。
日時の単位は以下のものを使います。
単位 | 意味 |
---|---|
y | 年 |
n | 月 |
w | 週 |
d | 日 |
h | 時 |
m | 分 |
s | 秒 |
例えば、「offset="10d"」とすると、10日後の日時を出力します。
また、「offset="-1n"」とすると、1か月前の日時を出力します。
offsetモディファイアの中に、複数の値を続けて指定することもできます。
例えば、「offset="1n-1d"」と書くと、1か月後(1n)の1日前(-1d)の日時を出力します。
なお、複数の値を続けて書く場合、それぞれの値の前に符号を指定する必要があります。
例えば、「offset="-1n1d"」と書くと、「offset="-1n"」と「offset="1d"」の両方を指定したのと同じになり、「1か月前の1日後」になります。「1か月1日前」にはなりません。
1か月1日前を求めたい場合は、「offset="-1n-1d"」と書きます。
2-4.format
日時系のテンプレートタグのformatモディファイアと同じ書き方で、日時の書式を指定することができます。
3.事例
ブログ記事の日付を元に、その1週間後の日付を出力したい場合は、以下のように書きます。
<$mt:DateDiff tag="EntryDate" offset="1w"$>
2012年6月21日12時34分56秒を基準に、その2時間半前の日時を出力したい場合は、以下のように書きます。
<$mt:DateDiff tag="20120621123456" offset="-2h-30m"$>