大輔べ

登山・写真・チェンマイ・台湾が好きな「たしろだいすけ」のブログ

WordPressで新規投稿した日から一定期間「New!」や「新着」などを表示する方法

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クラスでも、書くコードの量は大して変わりませんので、お好きな方をどうぞ。