2015/05/08

WPを外部PHPから呼ぶ際の常套手段で時刻がずれる罠

WordPressのアプリケーションセット外から、WordPress内の設定データや記事データをを外部のPHPコードから参照したい場合に

を読み込みでwordpress関数を使ってページを作る手段がありますが、その際にハマったのでメモ。

date関数で日付を取得するとなぜか9時間ずれてイギリス時間に。
こんなソースコード

デフォルトタイムゾーン設定の問題かと推測して
php.ini
の設定パラメータ変更、httpd再起動

解消しない。

date_default_timezone_set()でコード内で提示するもダメ
こんな感じ

最終的に下記コードで解消しました。
ポイントはrequire_onceで読み込んだ後に、date_default_timezone_set(‘Asia/Tokyo’);を呼ぶ

理屈としては、
WPのソースをざっと見た感じでは、date_default_timezone_set(‘UTC’); が wp-settings.php で呼ばれていて通常はUTC時刻で動作している。
必要なタイミングで get_option(‘timezone_string’); でWPアプリ上のダッシュボード>一般設定>タイムゾーンで設定したパラメータを適用しているようでした。
つまり wp-blog-header.php をインクルードした際に内部で
date_default_timezone_set(‘UTC’);が呼ばれてしまっていたのが原因。
`

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

JavaScriptを有効にしてください。
あるいは下記手順で投稿できます。
1.「トークンコード取得」を押すと枠内にトークンコードが表示されます
2.表示されたトークン文字を「投稿確認トークン入力」へ入力します

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">