WordPressで、新規投稿した日から一定期間、その投稿に「New!」であったり、「新着」などの文字やアイコンを表示をさせたい場合があると思います。
今回はPHPのDate関数、または、DateTimeクラスを使って、「New!」という文字を表示する方法を紹介します。
Date関数を使う
まずは、Date関数を使う方法から紹介します。
参考サイト PHP: date – Manual
この方法は検索エンジンで「Word Press New 表示」などで探した場合に、かなり多くの記事が見つかるので、たくさんの方が使っているのではないかと思われる方法です。
コード
<?php $days = 7; $today = date('U'); $date = get_the_time('U'); $period = date('U', ($today - $date)) / 86400; if ($days > $period) { echo 'New!'; } ?>
解説
2行目でNew!を表示していたい期間を設定しています。今回は7日間にしました。もしも、5日間にしたければ、5を$daysに代入してください。
次に、$todayにDate関数を使い、今日をタイムスタンプで代入し、また、$dateには、WordPressのテンプレートタグget_the_timeで投稿の投稿日時をタイムスタンプで代入します。
5行目では、$todayと$dateの差を求め、86400(60秒✕60分✕24時間=1日)で割ることで、経過日数($period)を計算しています。
最後に$daysと$periodを比べ、$period(経過日数)が$days(期間)以上になるまで、New!が表示されるif文を書いています。
使い方
上記コードを、New!を表示したい箇所(投稿一覧ページや個別ページ)に記述してください。
DateTimeクラスを使う
次に紹介するのが、DateTimeクラスを使う方法です。
ちなみに、DateTimeクラスは、PHP 5.2以降でなければ使えません。
参考サイト PHP: DateTime – Manual
コード
<?php $date = get_the_time('Y-n-j'); $period = new DateTime($date . " + 7days"); $today = new DateTime(); if ($period > $today) { echo 'New!'; } ?>
まず2行目で、投稿の投稿日時を$dateに代入します。形式は「西暦(4桁)−月(先頭に0を付けない)−日(先頭に0を付けない)」。
そして3行目で、投稿日から7日後を$periodに代入し、4行目で$todayに今日を代入。
最後に$periodと$todayを比べ、$periodが$todayより後の日付の場合は、New!が表示されるif文を書いています。
使い方
上記コードを、New!を表示したい箇所(投稿一覧ページや個別ページ)に記述してください。
Date関数でも、DateTimeクラスでも、書くコードの量は大して変わりませんので、お好きな方をどうぞ。