期限付きのコンテンツを表示する

投稿日: / 更新日:

特定の日や時間にだけ、コンテンツを表示したい時がありませんか?日付や時間帯、期限を指定して、その間だけ、コンテンツを表示できるショートコードを紹介します。

コード

関数

下記を、お使いのテーマのfunctions.phpに追加して下さい。fireが関数名で、doがショートコード名です。自身の環境に合わせて変更して下さいね。

function fire( $args=array(), $content="" ) {
	$is_view = true ;
	$now = time() ;
	$week = array( "sun", "mon", "tue", "wed", "thu", "fri", "sat" ) ;

	if( isset($args["from"]) && strtotime($args["from"]) > $now ) $is_view = false ;
	if( isset($args["to"]) && $now > strtotime($args["to"]) ) $is_view = false ;
	if( isset($args["date"]) && date("d") != date( "d", strtotime($args["date"]) ) ) $is_view = false ;
	if( isset($args["hour"]) && ( $hours = explode( ",", $args["hour"] ) ) && in_array( (string)date("H"), $hours ) === false ) $is_view = false ;
	if( isset($args["week"]) && $is_view && is_bool( $is_view = false ) && ( $weeks = explode( ",", $args["week"] ) ) && (in_array( (string)( $w = date("w") ), $weeks ) === true || in_array( $week[ (int)$w ], $weeks ) === true) ) $is_view = true ;

	return ($is_view) ? $content : "" ;
}
add_shortcode( "do", "fire" ) ;

使い方

例えば、毎日17時の時間帯にだけコンテンツを表示するには次の通りです。曜日、日付、期限など、様々な指定が可能です。

[do hour="17"]17時にしか表示されません。[/do]

引数

引数に利用できる属性をまとめました。これらは、単独でだけではなく、組み合わせて利用することができます。

項目説明
from日付(例2016/07/02)、または日時(例2016/07/02 14:34:01)を指定すると、それより未来にしか表示されません。
to日付(例2016/07/02)、または日時(例2016/07/02 14:34:01)を指定すると、それより過去にしか表示されません。日付だけを指定すると、その日の0時0分0秒と扱われます。
date日付(例2016/07/02)を指定すると、その日にだけ表示されます。
hour時間を単独(例14)、または複数(例14,15,20,24)で指定すると、その時間帯にだけ表示されます。複数指定するにはカンマ(,)で区切って下さい。
week小文字でアルファベット3文字の曜日を、単独(例mon)、または複数(例tue,thu,sat)で指定すると、その曜日にだけ表示されます。複数指定するにはカンマ(,)で区切って下さい。

デモ

ショートコードがどのように動くのか、HTML(WordPressでいう本文)を編集して試してみましょう。