日付での条件分岐はよく使うんですが、期間を指定しての分岐は普通にWEBサイト作ってたら滅多に使いません。
というより、今日とある制作案件で初めて使いました(笑)
非常に簡単なんですが、今後コピペで使えそうなので、メモとして残しておきます。
比較演算子で条件分岐
やりたいこととしては、状態を「受付前」「受付中」「受付終了」の3パターンで条件分岐すること。
$today = date("Y/m/d"); //今日の日付 $start = "2019/04/01"; //開始日 $end = "2019/04/30"; //終了日 if(strtotime($today) < strtotime($start)){ echo "まだ受付前です…"; }else if(strtotime($today) >= strtotime($start) && strtotime($end) >= strtotime($today)){ echo "現在受付中です!"; }else if(strtotime($today) > strtotime($end)){ echo "受付終了しました"; }
こんな感じの超単純な比較で、ページにアクセスした日付によって文言を変更できます。
ちなみに僕が実際にやったのは、クライアントがWordPressのカスタムフィールドに入力した開始日・終了日を元に分岐するというもの。
上のコードだと毎回開始日と終了日が完全に固定されてしまいますが、カスタムフィールドの値で変動するようにすれば、かなり実用的な機能になります。
例えば「Advanced Custom Fields」を使ったカスタムフィールドの場合
$start = “2019/04/01”; → $start = get_field(“フィールド名”);
のように、開始日の値を$startに、終了日の値を$endに設定すればOKです。
ただ、date関数でdate(“Y/m/d”)としているにも関わらず、カスタムフィールドでの出力が「2019-04-01」だったら残念ながら動きません。
その場合はカスタムフィールドの出力を「2019/04/01」にするために「-」を「/」に書き換えます。
str_replaceを使えば出来ますね。
$start = “2019-04-01”;
$start = str_replace(‘-‘, ‘/’, $start);
これでカスタムフィールドの出力が「2019/04/01」になるので、正常に動きます。
はい、超力技です。
WEBサイトでちょっと日付で分岐をしたいだけならきっと問題ない(・∀・;)