山形を拠点に活動するフリーランスWEBデザイナーのサイト兼備忘録です

休日と夜間、時間外…後は任せた!囲んだコンテンツにタイマーをかけるショートコード

最近は涼しくなってきたのか、秋の夜長を楽しんで遅く寝ても、まるでタイマーがかかったように朝6時前に目覚めるTomoです。

javascript(jQuery)やPHPを駆使すればそんな感じで、決まった時間に目覚めて、決まった時間に消えるコンテンツを作れるのですが、じゃあ、WordPressにはないの?ということになりますが、もちろんあります。

そもそもWordPressにはデフォルトで「予約投稿」という素晴らしい機能が備わっています。
固定ページ、投稿ページ問わず表示開始のタイミングを時間で設定できるんです。
公開のタイミングって大事ですしね。

しかしながら、ページ内の「一部のコンテンツだけ」の時間帯切り替えは実はデフォルトではできません。
PHPでできているWordPressですが、Exec-PHPのようなプラグインを使わない限り、投稿や固定ページのコンテンツ部分にPHPを記述することはできないので、普通はPHPのコードでタイマーを入れるという常套手段が使えませんが、ショートコードを作れば実は簡単に実装できてしまうのです。素敵!

とりあえずさくっとコードです。functions.phpに記述してください。


function changetimeFunc($atts,$content = null){
$tz=new DateTimeZone('Asia/Tokyo');$now = new DateTime('NOW',$tz);//ここで現在時刻を定義してください。(タイムゾーンは日本用)
extract(shortcode_atts(array('start'=>$now,'end'=>$now),$atts)); //中の配列で、ショートコードに使用する属性(例では'start'と'end')を指定し、値が入っていない場合は現在時刻を代入するように設定します。
if($now >= new DateTime($start,$tz) && $now <= new Datetime($end,$tz)): //上の配列で設定した属性に$をつけて開始時刻と終了時刻の双方を満たす条件式を記述します。
    return $content; //開始時間と終了時間を挟む時間ではショートコードで囲ったコンテンツを表示します。
endif;
}
add_shortcode('timer','changetimeFunc'); //上で設定したファンクションを右に、ショートコード名を左においてショートコードを定義します。

これだけです。もっと書きたかったですか?(5分インストール風味)
解説はコード中のコメントに書いてありますので参考にしてください。

そして、本文の中に以下のショートコードを記述するだけです。ちなみに、ビジュアルエディタ、テキストエディタの双方で有効です。

[timer start="" end=""]ここに時間条件で表示されるコンテンツを挟む[/timer]

これが最低限記述する内容です。(設定した属性は値を空にしてでも記述しないとエラーが出ます・・・)

今は開始時刻、終了時刻のどちらにも条件式が設定されていませんので、現在時刻が設定されています。となると、どちらも現在時刻を満たしているので、表示は不変です。

では開始時刻のみを記入します。

[timer start="2016-10-01 00:00:00" end=""]ここに時間条件で表示されるコンテンツを挟む[/timer]

そうすると、上記の場合10月1日0時になると、start と end の両方の条件を満たし、非表示状態から表示状態に切り替わります。

次に終了時刻のみ記入します。

[timer start="" end="2016-10-01 00:00:00"]ここに時間条件で表示されるコンテンツを挟む[/timer]

この場合は、10月1日午前0時までは双方の条件を満たしますが、それを過ぎると start側の条件が合わなくなり、非表示へと切り替わります。

両方記入すると・・・?

[timer start="2016-09-30 00:00:00" end="2016-10-01 00:00:00"]ここに時間条件で表示されるコンテンツを挟む[/timer]

この場合は両方の条件を満たしている9月30日0時から、10月1日0時までの間は表示され、それ以外の時間は非表示になります。

と、3種類の使用方法があります。年月日と時間の間は半角スペースで、年月日に関してはハイフンではなく半角のスラッシュでもOK。

近年、労働時間を見直そう、という国の方針もありますし、更新のためだけにプライベートの時間や他の仕事をする時間を削るのはなんとももったいないですよね。
このショートコード(とWordPress)があれば土日だろうが夜中だろうが、旅行で不在だろうが時間が来れば表示してくれます。(当然準備は入念に行わないとですが・・・)
タイマーを利用すれば更新のタイミングを心配せずに他の仕事にリソースを回せますので、さっさと仕事おわして帰りましょう!

秋は行楽や趣味を楽しむのにはうってつけの季節です。プライベートの時間を楽しむためにタイマーをがっつりご活用ください!

投稿日時:

最終更新:


コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

※コメントは承認制となっています。管理人の承認を得て初めて掲載されます。
※コメントには以下の HTML タグと属性のみ使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください