ゲームやWEB関係がメイン。まとまりのない雑記ブログ

WEB関係

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

投稿日:

日付での条件分岐はよく使うんですが、期間を指定しての分岐は普通に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サイトでちょっと日付で分岐をしたいだけならきっと問題ない(・∀・;)







関連記事

1つのメールアドレスでWordPressに複数ユーザーを作成する方法

仕事でクライアントから50人以上のユーザーを登録しなくてはならないサイト制作を依頼されました。 複数の店舗がそのサイトにそれぞれの情報を登録していくタイプのWEBサイトですね。 しかし、WordPre …

WordPressでユーザーを一括登録する「Import Users from CSV」の使い方

WordPressを複数のユーザーで管理したい時、1人ずつ登録するのは大変だと思います。 そんな時はWordPressのプラグイン「Import Users from CSV」を使って効率化しましょう …

Darkmode.jsでブログにダークモードを実装してみた

最近、ダークモードが流行っている気がします。 長時間スマホを使う人が増えたので、明るい色だと目が疲れるんですかね? このブログのカラーは白なんですが、ブログの機能としてダークモードを実装してみようかな …

パソコン画面の操作をキャプチャしてGIFアニメにする方法

最近仕事でよく使うフリーソフト「LICEcap」を紹介します。 LICEcapはパソコン画面での操作をアニメーションとしてGIF画像で保存できる、便利なフリーソフトです。 仕事でWEBサイトを作り、W …

クリック率をアップさせるボタンはHTML+CSSだけで超簡単に作れます

Webサイトを作る時、ボタンのデザインは意外と重要です。 ボタンのデザイン次第でクリック率が変わってしまうのは、実際に身をもって体験しています。 ちょっと前まではPhotoshopでボタンを作ることが …

この記事をシェアする