WordPress デフォルトタイムゾーンとローカルタイム

WordPress のデフォルトタイムゾーンは、タイムゾーンの設定に関わらず常に UTC に設定されています。

そして、WordPress の日付および時刻に関する関数など一部の機能は、デフォルトタイムゾーンが UTC であることに依存しています。よって、プラグインやテーマにてデフォルトタイムゾーンを変更してはいけません。変更した場合は必ず元に戻すようにしてください。

WordPress にはローカルタイムに対応した date_i18n() や current_time() があります。PHP の date() や time() の代わりに使用することでデフォルトタイムゾーンを変更することなくローカルタイムで取得することができます。

date_default_timezone_set( get_option( 'timezone_string' ) );
echo date( 'Y-m-d H:i:s' );

上記は、date_i18n() を使用して下記のようにすることで、正しいローカルタイムで取得することができます。

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

デフォルトタイムゾーンを変更した場合は、元に戻すようにします。

$default_timezone = date_default_timezone_get();
date_default_timezone_set( get_option( 'timezone_string' ) );
echo date( 'Y-m-d H:i:s' );
date_default_timezone_set( $default_timezone );

本来は、デフォルトタイムゾーンの変更は必要ないのですが、困ったことにプラグインの中にはデフォルトタイムゾーンを変更したままにするものが存在するので、下記のようにせざるを得ないのが実状です。

$default_timezone = date_default_timezone_get();
date_default_timezone_set( 'UTC' );
echo date_i18n( 'Y-m-d H:i:s' );
date_default_timezone_set( $default_timezone );

コメントを残す

メールアドレスが公開されることはありません。

日本語でコメントを入力してください。