WordPressテーマ上で「time」関数が協定世界時を返すのが困るんだけど…

WordPressの仕様だ。「(int)current_time('timestamp')」でサイト設定のタイムゾーンでのタイムスタンプを得られるぞ。

wordpress_earth定番ブログエンジンの「WordPress」では、PHPスクリプトで手軽にテーマやプラグインを作成出来る。そのときしばしば引っかかるのが、日付時刻関連処理のタイムゾーンだ。
PHPの関数「time」が返す現在時刻のタイムスタンプ(1970年1月1日0時0分0秒からの経過秒数)は、「php.ini」で設定されたタイムゾーンでのものになるはずなのだが、WordPressのテーマやプラグイン上ではUTC(協定世界時)になってしまい、日本時間と9時間のズレが生じてしまう。
ブログの設定画面のタイムゾーン設定欄に関係なくUTCになってしまうので奇妙に感じるが、現在のWordPressではこれが正式な仕様だ。
PHPでは、「date_default_timezone_set」関数で実行途中でタイムゾーンを変更できるが、他のプラグインで不具合が生じる恐れがあるので、避けた方がいい。少々面倒だが、「time()+9*60*60」のようにしてズレを修正しよう。
自作のテーマやプラグインを公開する場合は、サイトのタイムゾーン設定に従うようにしたい。この場合、「(int)current_time('timestamp')」を使おう。「current_time」はWordPressに用意されている関数で、サイト設定で指定したタイムゾーンでの現在時刻を取得できるぞ。

関数リファレンス/current time - WordPress Codex 日本語版

2016年06月02日 06時51分
©教えて君.net All Rights Reserved.