WordPressをCMSとして運用していると、固定ページ(または投稿)内で本文の一部分のみを指定した日時で削除(表示)したい事があります。
例えば
- 1/1から数日間は「明けましておめでとうございます」 を表示しておきたい。
- 固定ページ内に貼ったバナー(画像やテキスト)は期間限定だらから期日がきたら削除したい
などなど。
普通はそのタイミングで投稿の内容を変更しますが、うっかり忘れたりしないように本文内で日時指定したいものです。
そこで今回は指定日時によって内容を表示するショートコードを作成します。
PHPでやる方法
日時を指定して投稿を表示・非表示にする場合、PHPのdate関数を使えば簡単です。
<?php if ( date(YmdH) >= "2012052812" ) { //2012年5月28日12時以降 echo "指定日時に表示したい内容"; } ?>
たったこれだけです。日時のフォーマットについては公式マニュアルを参照にしてください。
これをWordPressでやる場合、投稿の本文内でPHPの関数を使えるプラグインを使用すれば大丈夫ですが、この手のプラグインはうっかりミスをすると、サイト全体を真っ白にしてしまう可能性もあります(PHPを何でも書けるためエラーが含まれた場合、大変なことになりますし、投稿する人すべてがPHPに詳しいとも限りません)。
これは大変に危険なので、 専用のショートコードを作成して対応します。
指定日時によって内容を表示するショートコード
https://gist.github.com/2817701
現在の日時の取得に WordPress の関数の date_i18n を使っています。
使い方は [datecontent opendate="YmdHi" closeDate="YmdHi"]指定日時で表示する内容[/datecontent]
です。
opendate で表示の開始日時、closeDate で表示の終了日時をYmdHiの形式で指定します。
ただし、日付フォーマットのチェック等は行っていませんので2バイト文字などを入力してしまうと、正常に表示されないと思いますが、その辺はご容赦ください。
※2011.5.29追記
Twitterで助言をもらって日付フォーマットのチェックと「分」まで指定できるようにし(時刻を指定していない場合は自動的に00:00となります)、プラグインとして動作するようにしてみました。
とりあえず、動けばいいや!で作ったショートコードですので、ご利用は自己責任でお願いします。
※今回のコードはGistにコードを書いて埋め込んでみました。