WordPressで設定したタイムゾーン・フォーマットで日時やタイムスタンプを取得する方法
今回はワードプレスの管理画面で設定したタイムゾーン・フォーマットで、日時やタイムスタンプを取得する方法です。
私自身、しばらくWordPressの仕事から遠ざかっていたりすると、いつも日付の取得の時に迷ってしまいます。PHPにもWordPressにも、日付関連の関数やテンプレートタグがうじゃうじゃありますからね。
WordPressだってPHPなんだから、PHPの関数でいいんじゃない?なんて思って軽い気持ちでPHP関数を書くと、標準時で取得してしまって9時間ずれてしまったり…。
以下の取得方法なら、その手の心配はありませんし、フォーマットも統一できます。せっかく管理画面で設定しているのですから、きちんとワードプレスのやり方で取得してあげましょう。日時文字列とタイムスタンプで分けて書いていきたいと思います。
~ 目次 ~
日時(文字列)の取得
まずは、そのままechoしても問題ない、フォーマットされた日時の文字列の取得。
以下の方法はすべて、標準時ではない「WordPressで設定したタイムゾーンのローカル日時」を、「WordPressで設定した日付(時刻)フォーマット」で取得できる。
ページにアクセスした現在の日時
現在の日時の取得には、date_i18n()を使う。引数にはフォーマットが必須なので、引数無しだとエラーになる。
WordPressで指定した日付フォーマットで現在の日付を取得
1 |
$dateAccess=date_i18n(get_option('date_format')); |
実際に出力⇒2024年12月4日
現在の日付にWordPressで設定したフォーマットで現在時刻まで取得
1 |
$dateAccess=date_i18n(get_option('date_format').get_option('time_format')); |
実際に出力⇒2024年12月4日02:24
WordPressの設定とはフォーマットを変えて取得
1 |
$dateAccess=date_i18n('今はY年m月のd日だっちゅうの!'); |
実際に出力⇒今は2024年12月の04日だっちゅうの!
日付や時刻フォーマットのマニュアル
Y・m・dなどの、日付や時刻のフォーマットで使える形式は、PHP: サポートする日付と時刻の書式 – Manualに詳しく載っている。
公開日時
記事の公開日時を文字列で取得するには、get_the_date()を使う。
1 |
$datePublish=get_the_date(); |
実際に出力⇒2018年8月1日
get_the_date()は、引数無しでは、年月日のみをWordPressで設定している日付フォーマットで取得するが、引数でフォーマットを記述すれば、時刻や秒まで取得可能。
WordPressで設定しているフォーマットで公開時刻まで取得
1 |
$datePublish=get_the_date(get_option('date_format').get_option('time_format')); |
実際に出力⇒2018年8月1日00:41
アーカイブページなどで繰り返し表示する場合
get_the_date()で公開日は取得できるが、アーカイブページなどで記事ごとに公開日を表示したい場合などは注意が必要。get_the_date()は、同じ日付で複数の投稿があると、ループの初回しか取得してくれない。
つまり、get_the_date()で取得した内容を表示してくれるthe_date()を使用すると、2018/03/03に3件の投稿があった場合、1件目にしか日付が出ない。という事で、下のようにget_the_time()を使用するとよい。
1 |
$datePublish=get_the_time(get_option('date_format')); |
最終更新日時
記事の最終更新日を文字列で取得するには、get_the_modified_date()を使う。
1 |
$dateModify=get_the_modified_date(); |
実際に出力⇒2020年6月10日
こちらも引数無しでは日付のみの取得となるが、引数でフォーマットを指定すれば、時刻も秒も取得可能。get_the_date()と、ほぼ同じ感覚で使用できる。
WordPressで設定しているフォーマットで最終更新時刻まで取得
1 |
$dateModify=get_the_modified_date(get_option('date_format').get_option('time_format')); |
実際に出力⇒2020年6月10日09:31
タイムスタンプを取得
カスタマイズなどの場合、タイムスタンプで取得したい場合も多い。すべて標準時ではなく、WordPressの設定->一般->タイムゾーンで選択しているローカル時刻でタイムスタンプを取得できる。
現在の日時のタイムスタンプ
現在の日時にはやはりdate_i18n()を使う。date_i18n()の第1引数を『U』とする事で、現在の日時のタイムスタンプが取得できる。
1 |
$timestampAccess=date_i18n('U'); |
実際に出力⇒1733279096
公開日時のタイムスタンプ
公開日時のタイムスタンプは、get_post_time()を使う。引数は初期値が「U」になっているため、引数無しでタイムスタンプが取得可能。
1 |
$timestampPublish=get_post_time(); |
実際に出力⇒1533084094
最終更新日時のタイムスタンプ
色々な方法で取得できるが、get_the_modified_time()が一番簡潔かと思う。get_post_time()と違い、フォーマットの初期値がWordPressの設定で指定した時刻フォーマットになるため、引数無しではタイムスタンプではなく時刻のみが取得される。引数に「U」を指定すると、最終更新日時のタイムスタンプを取得できる。
1 |
$timestampModify=get_the_modified_time('U'); |
実際に出力⇒1591781505