ACF のデイトピッカーで取得した日付が1日ずれる
カテゴリー: WordPress
この記事は2020年6月3日に書かれたものです。情報が古い可能性がありますのでご注意ください。
WordPress のバージョンを 5.2 から 5.4 にアップグレードしました。昨年11月に 5.3 がリリースされていましたがアップグレードを保留していたので、1世代超えてのメジャーバージョンアップとなりました。
するとあるサイトで、Advanced Custom Fields (ACF) プラグインのデイトピッカーで設定した日付が、1日前の日付で表示されるというトラブルが発生しました。時刻を設定してないので確認できませんが、正確には UTC との時差である9時間前なのかもしれません。
調べてみると、WordPress 5.3 で日付と時刻の処理が大きく変更(改善)されたようで、“PHPのタイムゾーンを date_default_timezone_set()
で変更しないでください”ということのようです。
当該サイトは date_default_timezone_set('Asia/Tokyo');
として、date()
で現在の日時を取得していたため、今回のバージョンアップで誤作動を起こしたようです。
そもそも、当初から date_default_timezone_set()
を使わず、date()
ではなく WordPress 独自の date_i18n()
を使えばよかったんですね。
さらに、date_i18n()
についても WordPress 5.3 からこの代わりとなる wp_date()
という関数が新たに追加されたようです。