期限付きのコンテンツを表示する
投稿日: / 更新日:
特定の日や時間にだけ、コンテンツを表示したい時がありませんか?日付や時間帯、期限を指定して、その間だけ、コンテンツを表示できるショートコードを紹介します。
コード
関数
下記を、お使いのテーマの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 )で指定すると、その曜日にだけ表示されます。複数指定するにはカンマ(, )で区切って下さい。 |