ワードプレス date_default_timezone_setに注意

WP情報
ワードプレス date_default_timezone_setに注意

 

PHPを使ってWordPressのテーマやプラグインの開発をされている方はdate()関数などを使用する際に日本時間修正のために記述の冒頭に

date_default_timezone_set( ‘Asia/Tokyo’ );

を入れる場合があると思います。

日本時間取得するためには他にも方法はありますが、PHPで使い慣れた関数をそのまま使用する際に便利なオマジナイです。

しかし、WordPressのバージョンが4.7に上がったくらいから妙な現象が起こりました。

使用しているプラグインの時間が実際の日本時間より9時間進んでしまったのです。(ありえない未来時間)

調査してみるとWordPress設定のタイムゾーンが東京にしてあるにも関わらず実時間より9時間進んでいる。

その時の世界標準時 (UTC) が実際の日本時間になっているわけです。

これはどういうこと?WordPressのバグ?

いろいろやってみて、判明したことはバージョン4.7以上のWordPressはテーマのfunctions.phpの記述もシステム時間に影響を与えるように修正されたようです。

つまり、これまでシステムのタームゾーンとテーマ記述によるタイムゾーンは独立していましたが、これからはテーマ記述も含めてタームゾーンが決定されるということです。(ファイル読み込みの順番が変更になったのかもしれませんが)

 

そこで解決策です。

テーマ内でタイムゾーン変更のPHP関数date_default_timezone_setを使用している場合は、東京から世界標準時間に戻す記述の追加をします。

例えば、

date_default_timezone_set( ‘Asia/Tokyo’ );
{日本時間が必要なPHP記述}

となっていたところを

date_default_timezone_set( ‘Asia/Tokyo’ );
{日本時間が必要なPHP記述}
date_default_timezone_set( ‘UTC’ );

のように最後に世界標準時間に戻す一文を追加するだけです。

今回調べた限りではfunctions.phpに存在するタームゾーン変更関数だけがシステムに影響を与えていましたが、テーマ内の他のファイルで使用している場合も同様に世界標準時間に戻す一文の追加をおすすめします。

 

タームゾーン変更関数はシステムに影響を与える重要な関数なのでローカルのテーマでの使用は細心の注意を払うべきですね。

 

お役に立てれば幸いです。

«
»
  • LINEで送る

音声ミュートを解除すると軽快な音楽が流れます (^^♪