当サイトには広告が含まれております

期間限定表示ショートコードを使って、年末年始休業の期間中だけメッセージを表示

この記事は最終更新日から5年経過しています。内容が古い可能性があります。

Photo by Tim Mossholder on Unsplash

2018年もそろそろ終わりですね。この「ゆうそうとITブログ」も年内はこれが最後の記事となります。年末年始休業中はお問い合わせが来ても、休み明けまでは返事はできないということをどこかに書いておきたい、というニーズがあると思います。4年ほど前に期間限定表示をするショートコードについて書きました。今回はそのショートコードをさらに簡単に使えるようにする記事を書きましたのでご覧下さい。

記事をざっと見る

ショートコードを表示するコードを書く

4年前の記事はこちらになります。

あわせて読みたい
ある期間だけ表示する囲み型ショートコード 昨日、「日付を与えるとその日までの日数を返すショートコード」というものを作りました。「オープンまであと○日!」とか「お正月まであと○にちですね~」とかの ○日 ...

このコードを試しに動かしてみたところ、Gutenbergのブロックエディターでも、Classic Editorでもどちらも全く問題なく動きました。

4年前の記事と違うところはCode Snippetsを使うところ

4年前の記事と違うところはCode Snippetsを使うところです。Code Snippetsについては

あわせて読みたい
プラグイン「Code Snippets」で機能を追加するとテーマを変更しても大丈夫 仕事でホームページを制作する際にphpでコードを書いてカスタマイズをすることが多いです。その場合、「子テーマのfunctions.php」にコードを書いています。コードは使...

こちらに書いてあります。このプラグインが入っていれば、コードをインポートして、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にしてするかどちらかの方法で使えるようになります。

limited-dates-show

今回、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が入っていればインポートするだけで期間限定表示ショートコードが使えるようになります。

今回の事例のように年末年始休業について、期間に入る直前に書き込んで、期間が終わったらすぐに削除するということをすれば特に何も使わなくてもいいのですが、ついうっかり、削除するのを忘れてしまうということがありがちです!このショートコードを使えばあらかじめ設定した期間だけにメッセージが表示されるので、間違えることもありません。

また、この期間限定表示ショートコードを使えば、明けましておめでとうございます!というようなメッセージを期間限定で表示することもできるので便利かな~と思います。

この記事が気に入ったら
いいね または フォローしてね!

あなたのシェアが励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントを残す

記事をざっと見る