WordPress:更新・公開された日付をもとに記事へ「New」を付ける方法

WordPress:更新・公開された日付をもとに記事へ「New」を付ける方法

普段から案件などでかなりの頻度で使う、WordPressを使ったサイトで最近の記事に対して「New」を付ける方法の備忘録です。
一般的によく使うのは「記事が公開されてから~」というものだと思いますが、「記事が更新されてから~」という場合のコードや非常に参考になるエントリーも併せて書き残しておこうと思います。

記事を公開してから○日間「New」を表示

表示させたい所に下記を記述し、「New」が表示される日数に関してはハイライト部分の$days = 3;の部分を任意で変更してください。
また、表示されるタグや文言を変更したい場合は同じくハイライト部分のechoに任意で指定してください。
下記のコードをそのまま使用した場合は、記事を公開してから3日間は<span class="new">New</span>が表示されるというものになります。

<?php
  $days = 3;
  $today = date_i18n('U');
  $entry = get_the_time('U');
  $elapsed = date('U',($today - $entry)) / 86400;
  if ( $days > $elapsed ) {
    echo '<span class="new">New</span>';
  }
?>

Newアイコンを画像で表示する

基本的な動きなどは先ほどのものと全く同じで、先ほどはテキストで「New」を表示させていたものを画像で表示させたいという時は下記で実装できます。
同じく表示される日数に関してはハイライト部分の$days = 3;の部分を任意で変更し、echo部分は画像名などを自身の環境にあわせて変更してください。

<?php
  $days = 3;
  $today = date_i18n('U');
  $entry = get_the_time('U');
  $elapsed = date('U',($today - $entry)) / 86400;
  if ( $days > $elapsed ) {
    echo '<img src="' .get_bloginfo('template_url'). '/images/new.png" alt="New" />';
  }
?>

記事を更新してから○日間「New」を表示

上の2つは「記事を公開してから~」というものでしたが、こちらは「記事を更新してから~」というものになります。
ただ、見ての通り記述がガラッと変わるわけではなく、先程までget_the_timeを使用していた箇所をget_the_modified_dateに変更するだけで、記事が公開された場合ではなく更新された場合にできます。

表示させたい所に下記を記述し、「New」が表示される日数に関してはハイライト部分の$days = 3;の部分を任意で変更してください。
また、表示されるタグや文言を変更したい場合は同じくハイライト部分のechoに任意で指定してください。
下記のコードをそのまま使用した場合は、記事を更新してから3日間は<span class="new">New</span>が表示されるというものになります。

<?php
  $days = 3;
  $today = date_i18n('U');
  $entry = get_the_modified_date('U');
  $elapsed = date('U',($today - $entry)) / 86400;
  if ( $days > $elapsed ) {
    echo '<span class="new">New</span>';
  }
?>

複数箇所で使う

例えば、投稿で作成した記事に関しては記事を更新してから3日間「New」を表示させたいけど、カスタム投稿で作成した記事の場合は更新してから10日間「New」を表示させたいというように、基本的にはサイト内で同じように「New」を表示させたいけど場合によって表示日数の条件を少し変更したいといった複数箇所で使用する時なんかに使えます。
(大して長くもないコードなんですが...)

まず、functions.phpに下記を記述します。

functions.php

function add_new( $date, $days ){
  $today = date_i18n('U');
  $elapsed = date('U',($today - $date)) / 86400;
  if ( $days > $elapsed ) {
    echo '<span class="new">New</span>';
  }
}

今までのものと同様、上記ハイライト部分のechoの部分は表示されるタグや文言の部分になるので任意で指定してください。
上記を記述後、あとは実際に表示させたい箇所に下記のような短いコードのみをそれぞれ記述していきます。

<?php add_new(get_the_time('U'),3); ?>

上記を表示させたい所に記述すれば、記事を公開してから3日間「New」が付くようになります。
「New」が付く日数を変更したい場合は赤字で「3」が記述してある部分を任意で変更するだけなので、先ほどの例のようにカスタム投稿で作成したものは10日間「New」を表示させたい場合はこの部分を「10」へ変更するだけでそれぞれ違う日数条件で表示されます。
また、ここではget_the_time公開したものになっていますが、get_the_timeの部分をget_the_modified_dateに変更すれば更新したものにできます。


以上、WordPressで更新・公開された日付をもとに「New」を付ける方法を書いてきましたが、これらは下記エントリーを参考にさせていただきました。
他にも日数ではなく時間で指定する方法や全ての記事の中から最新記事○件に対して表示させる方法なども紹介されているので、それらも非常に参考になります。

また、以下エントリーで紹介されているコードをfunctions.phpに記述することで簡単に管理画面から日数を変更することができるようになるので、クライアントや運営者が自由に変更できるようにという要望があった場合に便利です。

Close the search window,
please press close button or esc key.