年末年始にふとひらめき、ガガガッっと作ってしまいました。

固定ページ内のコンテンツを切り替えてしまうプラグイン

Time goes by って名前にしたけど、理由は「time」が使いたかったけど名前に迷ったので出てきたもの勝負で。

こちらからダウンロード出来ます!!
https://wordpress.org/plugins/time-goes-by/

使い方は簡単。
WordPressプラグインの画面から「アップロード」でインストールしてください。
「有効化」してしまったらもう利用できます。
管理画面はありません。

ショートコード[tgb]に下記パラメータを入れて上げれば良いです。
(ショートコードは本来半角の[]で囲みますが挙動してしまうため全角で表記します。お間違いないようにしてください。)

start_time : 囲まれたコンテンツを表示する時刻
end_time  : 囲まれたコンテンツを表示しなくなる時刻
timezone : タイムゾーン指定(デフォルトは サーバーまたはphp.iniのタイムゾーン ※date_default_timezone_getメソッドで取得できるもの )

時刻の指定は どちらか または どちらも 指定できます。
なにも入れなければそのまま表示されます。

start_timeとend_timeの指定はphpの strtotimeメソッドでできる形式であればどれでも大丈夫です。
http://php.net/manual/ja/datetime.formats.php

例えば 20160101 に表示開始したい場合は [tgb start_time=’20160101′]〜表示したい文言〜[/tgb]
でオーケーです。
start_time は指定時刻を含むところから開始し
end_time は指定時刻になれば表示を停止します。
ですので [tgb end_time=’20160101’]〜ああああ〜[/tgb] とすると
2016年になった瞬間表示されなくなります。

より詳細で繰り返しの設定が可能な configパラメータ

より詳細で繰り返しも可能な config パラメータの設定ができるようにしました。
設定は config=”day:1|2|3|4|5,hour:7|8|9|10|11″ のように設定します。
上記の設定は下記のように理解されます。

「毎月1〜5日 の 7〜11時 にだけ表示される」

これに start_time, end_time も絡めて詳細に繰り返しとなる部分を設定することが可能です。
そして複数の設定を一度に行うことができます。パラメータをカンマ区切りで指定できます。
** 複数の設定は記述の順番に実行されます。ただし、任意のパラメータについては最後に実行されます。
** 規定のパラメータ、任意のパラメータ以外のパラメータは無視されます。

config パラメータは下記の設定が出来ます。
[1] hour: 24時表記で設定します。7〜10時という場合は hour:7|8|9(10時台に入ったら表示されない) というように | (vertical line)で区切るようにします。
[2] day: 毎月○日の設定をします。 day:7|8|9|10 とすると 7〜10日というようになります。
[3] week: 毎週○曜日の設定をします。 week:sun|mon|tue とすると日〜火曜日という感じです。一応日本語での設定も受け付けるはずです。 week:火|木|土 など。
[4] month: ○月の設定をします。 month:6|7|8 とすると6〜8月という感じです。季節ごとの表示切り替えができる感じです。
[5] last_day_month: 月末日から○日間の設定をします。 last_day_month:2 とすると 1月なら 30日と31日・2月なら 27日と28日(うるう年なら 28日と29日)という感じです。
[6] 任意のパラメータ これは

add_filter('time_goes_by_judgement', '〜任意のメソッド名〜', 10, 3);

という感じにfunctions.phpに記述し
任意のメソッド名にて TRUE か FALSE を返却すればそのように表示されます。
そもそも他の判定に依存しないように $flg を引数に入れていますので、そこまでの判定を覆すことも可能です。
$config には任意のパラメータ以外の上記パラメータも入ってきます。 $content にはショートコードで囲まれた部分が入ってますので
様々な利用方法・判定方法が考えられます。

apply_filters( 'time_goes_by_judgement', $flg, $configs, $content );

祝日に表示する などは現在のプラグイン自体にはない機能ですが、これを使って実装すると良いでしょう。

例:

 

ついでに投稿IDで内容を呼び出して表示する機能も作りました。

上記のまででもいいかな・・・って思ったんですが、それぞれをテストしたいですよね・・・・。
コンテンツを調整しながら作りたいですよね・・・・。
そうですよね。

なので「固定ページ」で作っておいてそれを投稿IDで呼び出せるようなショートコードも作りました。
ショートコード[disp_title]と[disp_content]です。
[disp_title]はタイトルを表示でき
[disp_content]はコンテンツ内容を表示します。
※それぞれ内容中のショートコードも効くようになってます。

下記の例をご覧ください。

[tgb start_time="20151230"]<h2>[disp_title post_id='6190']</h2>[disp_content post_id='6190']<br />[/tgb]

この場合は 2015年12月30日0時0分に 投稿ID 6190のコンテンツのタイトルがh2で 内容がそのあと表示される

という感じになります。

もっともらしい例を出すと下記の様な感じです。




<h2></h2>



1行目で2016年になったら表示しなくなる固定ページのタイトルと内容を表示し
2行目で2016年から表示される固定ページのタイトルと内容を表示するようになります。

1.2.5より slug指定できるようになりました。

<h2></h2>

ショートコードだけで挙動しますので管理画面は今のところありません。

一応サーバーと表示する国のタイムゾーンが違っている場合に備え timezone パラメータも作ってます。

timezone=’Asia/Tokyo’ とすると海外時刻で動いているサーバー上でも日本時間での挙動となります。
管理画面でデフォルト指定ができますのでいちいち設定する必要はありません。


ご紹介ありがとうございます!

私個人的に…ですが初めて発見した、使い方等をご紹介いただいた記事です。ありがとうございました。