2018年もそろそろ終わりですね。この「ゆうそうとITブログ」も年内はこれが最後の記事となります。年末年始休業中はお問い合わせが来ても、休み明けまでは返事はできないということをどこかに書いておきたい、というニーズがあると思います。4年ほど前に期間限定表示をするショートコードについて書きました。今回はそのショートコードをさらに簡単に使えるようにする記事を書きましたのでご覧下さい。
ショートコードを表示するコードを書く
4年前の記事はこちらになります。
このコードを試しに動かしてみたところ、Gutenbergのブロックエディターでも、Classic Editorでもどちらも全く問題なく動きました。
4年前の記事と違うところはCode Snippetsを使うところ
4年前の記事と違うところはCode Snippetsを使うところです。Code Snippetsについては
こちらに書いてあります。このプラグインが入っていれば、コードをインポートして、Activeにするだけで今回ご紹介するショートコードで期間限定のメッセージを表示することができます。
Code Snippetsにインポートするファイルの中身
Code Snippetsにインポートするファイルの中身は以下の通りです。
// from,toで囲まれた日だったら中に指定してあるショートコードを実行する function usort_during($atts, $content) { /* 引数を展開する */ extract( shortcode_atts( array( 'to' => '', 'from' => '', ), $atts ) ); $dateArrayTo = _dateExplode($to); $dateArrayFrom = _dateExplode($from); // 日付妥当性 if (count($dateArrayTo) > 0){ if(_dateCheck($dateArrayTo) == false){ return ''; } } if (count($dateArrayFrom) > 0){ if(_dateCheck($dateArrayFrom) == false){ return ''; } } $todayDate = date("Y").date("m").date("d"); $fromDate = '00000000'; $toDate = '99999999'; if(count($dateArrayFrom) == 3){ $fromDate = $dateArrayFrom[0].$dateArrayFrom[1].$dateArrayFrom[2]; } if(count($dateArrayTo) == 3){ $toDate = $dateArrayTo[0].$dateArrayTo[1].$dateArrayTo[2]; } if(($fromDate <= $todayDate) AND ($toDate >= $todayDate)){ $content = '<div style="border:1px solid #f00;padding:10px;">'.$content.'</div>'; return do_shortcode($content); } return ''; } add_shortcode('usort_during', 'usort_during'); function _dateCheck($dateArray) { if(count($dateArray) != 3) { return false; } else { if(checkdate ( intval($dateArray[1]) , intval($dateArray[2]) , intval($dateArray[0]) )){ return true; } else { return false; } } } function _dateExplode($date) { $dateArray = array(); if($date != ''){ if(strpos($date, '/') !== false){ $dateArray = explode("/", $date); } else { $dateArray = explode("-", $date); } } if(count($dateArray) == 3){ $dateArray[1] = substr('0'.$dateArray[1], -2); $dateArray[2] = substr('0'.$dateArray[2], -2); } return $dateArray; }
このコードをコピーしてCode Snippetsに貼り付けてActiveにするか、エクスポートしたものを下記に置きましたのでzipを解凍してCode SnippetsにインポートしてActiveにしてするかどちらかの方法で使えるようになります。
今回、1箇所コードを変えたのですがそれはメッセージを赤枠で囲むということです。実際に使うときにこの方が都合が良かったのですが、もしその部分を削除したいとか色などのCSSを変えたいというような場合は、
if(($fromDate <= $todayDate) AND ($toDate >= $todayDate)){ $content = ''.$content.''; return do_shortcode($content); }
ここに書いてあるstyle=部分を削除するか、CSSを修正して下さい。
期間限定表示ショートコードの使い方
期間限定表示ショートコードは
[usort_during from="2018-12-19" to="2019-1-3"]2018年12月21日~2019年1月3日は年末年始休暇となります。この期間中にいただいたご連絡につきましては2019年1月4日より順次お返事させていただきます。[/usort_during]
このような形で指定します。このショートコードは投稿や固定ページ、多くの場合はHTMLテキストウィジェットなどに貼り付けて動作させることができます。
・from= に表示を開始したい日
・to= に表示を終了したい日
・[usort_during from=”yyyy-mm-dd” to=”yyyy-mm-dd”]ここにかいてある文章が表示される[/usort_during]
この3つを指定します。このコードが実際に表示されると
このように表示されます。
fromを先の日付(今現在は2018/12/19)にしてみます。
<!-- wp:shortcode --> [usort_during from="2018-12-21" to="2019-1-3"]2018年12月21日~2019年1月3日は年末年始休暇となります。この期間中にいただいたご連絡につきましては2019年1月4日より順次お返事させていただきます。[/usort_during] <!-- /wp:shortcode -->
これで更新をすると、
このようにショートコードで表示していたメッセージが表示されなくなりました。このまま放っておけば指定した日付になると表示されるようになります。
まとめ:Code Snippetsが入っていればインポートするだけで使えるようになります
Code Snippetsが入っていればインポートするだけで期間限定表示ショートコードが使えるようになります。
今回の事例のように年末年始休業について、期間に入る直前に書き込んで、期間が終わったらすぐに削除するということをすれば特に何も使わなくてもいいのですが、ついうっかり、削除するのを忘れてしまうということがありがちです!このショートコードを使えばあらかじめ設定した期間だけにメッセージが表示されるので、間違えることもありません。
また、この期間限定表示ショートコードを使えば、明けましておめでとうございます!というようなメッセージを期間限定で表示することもできるので便利かな~と思います。
コメント