WordPressをCMSとして運用していると、固定ページ(または投稿)内で本文の一部分のみを指定した日時で削除(表示)したい事があります。

例えば

  • 1/1から数日間は「明けましておめでとうございます」 を表示しておきたい。
  •  固定ページ内に貼ったバナー(画像やテキスト)は期間限定だらから期日がきたら削除したい

などなど。

普通はそのタイミングで投稿の内容を変更しますが、うっかり忘れたりしないように本文内で日時指定したいものです。

そこで今回は指定日時によって内容を表示するショートコードを作成します。

スポンサーサイト

PHPでやる方法

日時を指定して投稿を表示・非表示にする場合、PHPのdate関数を使えば簡単です。

たったこれだけです。日時のフォーマットについては公式マニュアルを参照にしてください。

これをWordPressでやる場合、投稿の本文内でPHPの関数を使えるプラグインを使用すれば大丈夫ですが、この手のプラグインはうっかりミスをすると、サイト全体を真っ白にしてしまう可能性もあります(PHPを何でも書けるためエラーが含まれた場合、大変なことになりますし、投稿する人すべてがPHPに詳しいとも限りません)。
これは大変に危険なので、 専用のショートコードを作成して対応します。

指定日時によって内容を表示するショートコード

現在の日時の取得に WordPress の関数の date_i18n を使っています。

使い方は [datecontent opendate="YmdHi" closeDate="YmdHi"]指定日時で表示する内容[/datecontent] です。
opendate で表示の開始日時、closeDate で表示の終了日時をYmdHiの形式で指定します。
ただし、日付フォーマットのチェック等は行っていませんので2バイト文字などを入力してしまうと、正常に表示されないと思いますが、その辺はご容赦ください。

※2011.5.29追記
Twitterで助言をもらって日付フォーマットのチェックと「分」まで指定できるようにし(時刻を指定していない場合は自動的に00:00となります)、プラグインとして動作するようにしてみました。

とりあえず、動けばいいや!で作ったショートコードですので、ご利用は自己責任でお願いします。

※今回のコードはGistにコードを書いて埋め込んでみました。