WEB制作

【PHP】日付比較で期間を指定して条件分岐してみる

2019年4月11日

WordPressのカスタムフィールドに、期間を指定した日付の条件分岐を実装しました。

今後コピペで使えそうなので、メモとして残しておきます。

比較演算子で条件分岐

やりたいこととしては、状態を「受付前」「受付中」「受付終了」の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 "受付終了しました";
}

こんな感じで、ページにアクセスした日付によって文言を変更できます。

上のコードだと毎回開始日と終了日が完全に固定されてしまいますが、$startと$endの値をカスタムフィールドで変動するようにすれば、かなり実用的な機能になります。

例えば「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制作

Copyright © Silence-log , All Rights Reserved.