ワードプレスでdate関数(例 date(“Y-m-d H:i:s”))をプラグインやテーマのプログラムで使うと日本時間で9時間ずれることがあります。その理由と、対処方法をご紹介いたします。

ワードプレス上で、date関数を使うと必ず世界標準時が出力されます

ワードプレスでは、タイムゾーンが初期段階で、世界標準時に固定されるため、PHPのdate関数(例 date(“Y-m-d H:i:s”))を使うと世界標準時が必ず出力されるようになっています。
こちらが日本のワードプレスサイトでDate関数を使うと9時間ずれる理由となります。
こちらを回避するには、ワードプレスの標準関数である、date_i18nを使います。

date_i18nはワードプレスの管理画面>設定>一般にあるタイムゾーン設定に従い、日付と時間を出力します。

修正方法

修正方法はとても簡単で、dateを使っているコードの部分をdate_i18nに書き換えるだけです。

echo date("Y-m-d H:i:s");

echo date_i18n("Y-m-d H:i:s");

date_default_timezone_set()は使わないようにしましょう

ワードプレスでプラグインやテーマで、date_default_timezone_set()でタイムゾーンをセットするのは、ほかのプラグイン等に影響が及び、ワードプレスの時間設定の一貫性を壊すので使わない方が無難です。

どうしても一部の日時出力をワードプレス標準の時間設定から変えて出力したい場合は下記のようにします。

$timezone = new DateTimeZone( 'Asia/Singapore' ); //この出力で変えたいタイムゾーン
echo wp_date("Y-m-d H:i:s", null, $timezone );//一回だけ上のタイムゾーン設定に従い出力

参考 タイムゾーン一覧

WordPressワードプレスのカスタマイズ・復旧・修正・引っ越しのご相談ご依頼はお気軽にワードプレスドクターまでお送りください