直近1ヶ月に投稿した記事の人気順位を表示するテンプレートを作りました という記事を書いたときに初めて気づいたのですが、phpの date で取ってくる日時がなんかおかしい。。時刻まで表示してみたら分かったのですが、
↑このときの日時は 2014-07-11 09:10
と、9時間少なかったのです。ということは グリニッジ標準時 ってことなんですね。
テンプレートなどでdateを使うことはこれからもあると思うので日本時間を認識するようにしてみました。
確認:ダッシュボード
ググるとダッシュボードにタイムゾーンの設定があるという情報を得ました。
設定>一般 で見ると、
このようにタイムゾーンはちゃんと設定されています。たしか投稿日付などは間違っていないのでどこか部分的にだけ、タイムゾーンがグリニッジ標準時になっちゃって、9時間ずれているみたいです。
タイムゾーンの設定を子テーマのfunctions.phpに入れてみた
今回時間がずれていたのはテンプレートでの判定のときだったので、子テーマのfunctions.phpの最後の行にタイムゾーンの設定を入れてみました。
date_default_timezone_set('Asia/Tokyo');
うーん、本当はダッシュボードで指定したタイムゾーンをいれたいのですが、調べる時間をはしょって(^_^;、ハードコーディングしてしまいました。
同じページを表示してみると、
↑このときの日時 20140-07-11 09:19
と正しく表示されました。一度この設定をしておけば、php で dateを参照したときにずれなくて済みますね。
もっと別の方法もありました
【date関数を使うとずれるので】WordPressで日時を扱うときは、この関数が便利でした
date ではなく date_i18n を使うとずれなく取得できるようです。
なるほどWordPressはちゃんと関数を用意してくれているのですね!
私の場合は別の環境で作ったロジックをWordPressで使ったりするのでやはり共通で使えるdateの時間をタイムゾーンに合わせたいですが、WordPressでしかコーディングしない場合は date_i18n を使うことでも解決できそうです。
コメント