【PHP】日時指定でバナー画像(表示)を切り替える!キャンペーンやイベント開催中の表示変更などに使える!

広告バナーの表示をキャンペーンなどの期間中だけ通常時とは異なるものを表示したい

「WEBサイトで表示するバナーをある期間中だけ変更したい!」

こういったこと、結構あると思います。
phpで実装するのが簡単だと思います。

時間が来たら、切り替える表示を以下のようにPHPで設定してみます。

①指定日時以降別表示にする場合

例えば、「2017年11月21日12時」以降に表示を切り替えたい場合

<?php
// 現在時刻が、2017年11月21日12:00より前であればimage1.jpgを表示
if (strtotime(date('Y-m-d H:i')) < strtotime('2017-11-21 12:00'))
{
     echo '<img src="img/image1.jpg">';
 
// 現在時刻が、2017年11月21日12:00より後であればimage2.jpgを表示
} else {
      echo '<img src="img/image2.jpg">';
}
?>

②指定期間中だけ別表示にする場合

例えば、「2017年11月21日」だけ別表示に替えたい場合

<?php
// 2017年11月21日0時から24時までの期間を指定する。
// 期間中は image1.jpg を表示、期間外はimage2.jpg を表示。
if (time() >= strtotime("2017-11-21 00:00:00") && time() < strtotime("2017-11-22 00:00:00")) {
    echo '<img src="img/image1.jpg">';
} else {
   echo '<img src="img/image2.jpg">';
}
?>

キャンペーン期間中のヘッダーバナーを変更したりする簡単な表示切り替えはこのような形で実装しました。

実はちょっとミスってしまった

実は前回クライアントサイトのバナー切り替え時にミスってしまいました。

指定日時になっても切り替わらない…

そう連絡があり、サイトを確認しても切り替わっていない。
ちゃんと設定したはずなのに、切り替わらない…。少し焦りましたが、原因はすぐにわかりました(苦笑)

時間が9時間ズレてる…

サーバーの設定でタイムゾーンがUTC(協定世界時)になっていたり、WordPress(バージョンによる)を使ったりしていると、たまーにあるかもしれません。

サーバーをいじれる状況であれば、そちらで設定すれば良いのでしょうが、取り急ぎ、一行を追加する。

date_default_timezone_set("Asia/Tokyo");

追加したのが下記、

<?php
//下記を追加で日本時間(GMT)に設定
date_default_timezone_set("Asia/Tokyo");
// 現在時刻が、2017年11月21日12:00より前であればimage1.jpgを表示
if (strtotime(date('Y-m-d H:i')) < strtotime('2017-11-21 12:00'))
{
     echo '<img src="img/image1.jpg">';
 
// 現在時刻が、2017年11月21日12:00より後であればimage2.jpgを表示
} else {
      echo '<img src="img/image2.jpg">';
}
?>

これで、日本時間に設定されたので、9時間ずれずにバッチリ日時を指定出来ます!

参考にしたサイト

date関数で日付や時刻が正しく表示されないとき

関連記事Related article