ブログBlog

WordPressの日時(タイムスタンプ)について

以前、Wordpressをカスタマイズしている際に、日時について戸惑った経験がありました。
その際に、いろいろ調べてみてわかったことがあったので、そのお話となります。

 

1.PHPの日時取得関数を使って日時を取得すると日時がずれている。

WordPressのカスタマイズ作業をしている中で、現在時刻を取得して動作している処理において、時刻が8時間ずれている事を発見。
調査してみるとその原因は、何気なくdate関数を使って現在時刻を取得して処理を行っている箇所でした。
タイムゾーンが怪しいなということで、この時に調べた内容を掲載します。

 

2.特定地域の日時の算出方法

特定地域の日時は、タイムスタンプとタイムゾーンオフセット(*1)を考慮することでその地域の日時を計算します。

*1 タイムソーンオフセット
特定の地域の時刻を協定世界時(UTC)からの時差で表現するもの。世界中には、地球の経度によって異なるタイムゾーンが存在し、それぞれのタイムゾーンはUTCとの時差を持ちます。

通常タイムスタンプは、OSのタイムゾーンやプログラムの設定の値からタイムゾーンオフセット値を計算します。PHPならば、php.iniなどです。
なんでもそうですが、スマホもタブレットも、PCも最初の設定で「地域」の設定をします。これで各種の機器の時刻が日本時間になるわけです。

 

3.Wordpressのタイムゾーン

WordPressでは、Wordpressタイムスタンプという形で独自のタイムスタンプを使っています。
WordPressでは、管理画面で設定されたタイムゾーンを整数値に変換して使用しています。

Wordpressのタイムゾーン設定

WordPressのタイムゾーン設定

つまり、以下の様なイメージ

WordPressタイムスタンプ = Unixタイムスタンプ + タイムゾーンオフセット(*2)

*2 管理画面で設定されたタイムゾーンを整数値に変換した値。

 

4.問題点

WordPressでは、最初にphp.iniのタイムゾーン設定を無効化しています。

wp-settings.php

 

WordPressでは、Wordpressタイムゾーンを使用するため、時差なしにしてしまいます。
(独自にタイムゾーンオフセットを設定しているため。)

そのため、PHPの関数(date関数など)を使って現在時刻を取得すると、時差なしのロンドン日時になるという問題が生じます。

だからといって、PHPの関数で、
date_default_timezone_set(‘Asia/Tokyo’);
などとタイムゾーンを設定してはいけません。

WordPressは、Wordpress独自のタイムスタンプで動作しているため、Wordpress側の日時関連処理がおかしくなります。

 

5.解決策

WordPressが提供している関数(wp_dateなど)を使用しましょう。

 

以上

WEB DESIGN

RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。

「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。

運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。

しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。

本業が忙しい中小企業様に大変ご好評を頂いている商品です。

  • 独自ドメイン取得

    独自ドメイン取得

  • サーバー開設&設定

    サーバー開設&設定

  • レイアウト設計

    レイアウト設計

  • レスポンシブルデザイン

    レスポンシブルデザイン
    (*1)

  • 検索エンジン最適化(SEO対策)

    検索エンジン最適化
    (SEO対策)

  • 場所Maps

    場所Maps

  • お問い合わせフォーム

    お問い合わせフォーム

  • SSL化

    SSL化

  • 各種SNS連携

    各種SNS連携

  • 運用マニュアル

    運用マニュアル

≫詳細はこちら

MENU