WordPress 一定期間新着記事に「新着」マークをつける date_i18n(‘U’)
ワードプレスである一定期間新着投稿に「新着」や「NEW!」のアイコン・マークをつける方法。date_i18n('U’)とget_the_time('U’)のWordPress関数でUNIX時間(UNIX時刻)を取得し現在時間と公開時間の差を求めて期間限定で新着マークを表示する。
時間フォーマットにUNIX時間(UNIX時刻)
WordPressである一定期間新着記事にマークをつけるソースコードは検索すれば色々出てくるので備忘録にする必要はあまりないのだけど、要は投稿公開した時間と現在の時間との差、経過時間を知ることがキモで、時間フォーマットはUNIX時間(UNIX時刻)を使うのが使い勝手がいいみたい。
時間のPHP関数や時間フォーマットについてはdate()で調べればたくさん出てくるのでここではパス。一定期間新着投稿に「新着」マークをつけるコードは下のコードを表示したいところに貼り付けるだけ。まあ、いつものテーマやウィジェットのカスタマイズ作業が必要になるけどコード自体は大体意味がわかるかな。
date_i18n('U’)で現在時間get_the_time('U’)で投稿時間
<?php
$kikan = 7 ;
$genzai = date_i18n('U');
$koukai = get_the_time('U');
$keika = date('U',($genzai - $koukai)) / 86400 ;
if( $kikan > $keika ) {
echo '新着';
}
?>
UNIX時間(UNIX時刻)というのは、協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数ということらしい。詳しくは調べるべし。UNIX時間は1970年1月1日午前0時0分0秒からの形式的な経過秒数なので、時間差などを求める時に使い勝手がよい時間フォーマットということ。と理解申した私。
$kikanで新着マークをつける日数を指定
2行目$kikanで新着マークをつける期間を日数で指定する。上のコードの場合7日間新着マークをつける。
date_i18n('U’)で現在のUNIX時間で取得
3行目date_i18n('U’)で現在の時間をUNIX時間で取得する。
PHPの時間(時刻)関係の関数にはdate()関数があるけど、何も考えずに使うと「あれ時間が9時間ずれてる」とかになりがち。協定世界時 (UTC) とローカル時間(タイムゾーン)のずれということ。
この時間のずれを意識しないで使える時間(時刻)の関数がdate_i18n()というWordPress関数で、PHPのdate()関数と同じ様に時間フォーマットを指定できる。ダッシュボードの設定→一般→タイムゾーンのところに設定したタイムゾーンでの時間を表示(取得)できる。
get_the_time(‘U’)で投稿日時をUNIX時間で取得
4行目get_the_time('U’)で投稿公開の日時をUNIX時間で取得する。get_the_time()というWordPress関数は投稿公開の日時を取得できる。時間フォーマット(引数)は、PHPのdate()関数と同じ様に時間フォーマットを指定できる。基本ループ内で使用するが投稿IDを指定すればループ外でも使用できる。
date()関数で現在日時と投稿日時の時間差(期間)をUNIX時間で取得
5行目PHPのdate()関数で、date_i18n('U’)で取得した現在UNIX時間とget_the_time('U’)で取得した投稿公開UNIX時間の時間差(秒数)をUNIX時間で取得し、1日の秒数(24時間x60分x60秒=86400秒)で割る。ということは、投稿公開から現在までの経過期間が日数ででるということになる。
新着をつける日数が経過日数より大きい場合「新着」
6行目、もしも$kikanで指定した「新着」マークを表示する日数が、$keika投稿公開から現在までの経過日数より大きい場合、新着と表示して頂戴。