WordPress:古い記事にメッセージを表示させる際の備忘録

WordPress:古い記事にメッセージを表示させる際の備忘録

備忘録。
○年以上前や○日以上前というように、WordPressで一定の期間が経過した古い記事にメッセージを表示させる方法で、公開日だけでなく更新日を条件にした場合も含めた全4パターンの実装方法です。
日記などのコンテンツであれば必要ないと思いますが、例えば時事ネタや技術ネタといったように掲載している情報がどんどん古くなったり最悪使えなくなるようなものを扱っていて閲覧者に注意を促したいという場合に便利です。

○○以上前の記事にメッセージを表示する

90日前や半年前というように細かく指定したい時に便利な方法で、下記は例として「公開されてから1年以上経過している」という条件のものになります。

<?php
  if ( date('U') - get_the_time('U') > 60*60*24*365 ) {
  ?>
  <div class="old-post-message">
    <p>この記事は<?php the_time('Y年n月j日') ?>に書かれたもので、内容が古い可能性がありますのでご注意ください。</p>
  </div>
  <?php
  }
?>

日数条件を変更したい場合は上記コードで365と指定している部分を任意の数値に変更し、表示されるメッセージなどを変更したい場合はdiv.old-post-messageの箇所を変更してください。

この方法は以下で紹介されているものを参考にしました。

ざっくり○年以上前の記事にメッセージを表示する

先ほどの方法でも○年前の記事にメッセージを表示するということができますが、下記はもっとざっくりと1年前、2年前...という形で実装する方法です。

<?php
  if( date('Y') - get_the_time('Y') > 0 ) {
  ?>
  <div class="old-post-message">
    <p>この記事は<?php the_time('Y年n月j日') ?>に書かれたもので、内容が古い可能性がありますのでご注意ください。</p>
  </div>
  <?php
  }
?>

上記は「ざっくり1年前の記事にメッセージを表示する」というもので、2年以上にしたいなど条件を変更したい場合は上記コードで0と指定している部分を任意の数値に変更してください。
また、表示されるメッセージなどを変更したい場合は同じくdiv.old-post-messageの箇所を変更してください。

日付以外の条件も追加する

ブログによっては上で紹介してきた方法で全ての記事に対して実装してしまえば良いんですが、例えば技術ネタと日記を一緒に書いているけど日記ではこのメッセージは出したくないというように記事によって表示・非表示を指定したい場合は、先ほどのものに条件を追記することで実装できます。
下記は例として「1年以上前の古い記事 且つ カテゴリーIDが「3」の記事である場合にメッセージを表示させる」というものになります。

<?php
  if ( date('U') - get_the_time('U') > 60*60*24*365 && in_category('3') ) {
  ?>
  <div class="old-post-message">
    <p>
      この記事は<?php the_time('Y年n月j日') ?>に書かれた技術系エントリーです。<br />
      内容が古く、現在では推奨されていない方法の可能性もありますのでご注意ください。
    </p>
  </div>
  <?php
  }
?>

表示されるメッセージなどを変更したい場合は同じくdiv.old-post-messageの箇所を変更し、条件にしたいカテゴリーIDを変更したい場合は、上記コードのin_category()で指定している数値を任意のものに変更してください。
ここではカテゴリーをひとつだけ指定する形になっていますが、もちろんカテゴリーを複数指定したりスラッグを指定することもできます。

条件を投稿日ではなく更新日にする

これまでのものはいずれも「記事が公開(投稿)された日」に対しての条件でしたが、こちらは「更新された日」を条件にしたものです。
一度投稿したら終わりではなく、過去に投稿したものでも頻繁に更新してるような場合に良いと思います。

<?php
  if ( get_the_modified_date('Y') <= date('Y') - 2 ) {
  ?>
  <div class="old-post-message">
      <p>この記事は<?php the_time('Y年n月j日') ?>に更新されたもので、内容が古い可能性がありますのでご注意ください。</p>
  </div>
  <?php
  }
?>

上記は「2年以上前の12月31日までに更新された記事にメッセージを表示する」というものになり、例え古い記事であっても更新されたことがあればメッセージは表示されないものになります。
条件を変更したい場合は上記コードで2と指定している部分を任意の数値に変更し、表示されるメッセージなどを変更したい場合は同じくdiv.old-post-messageの箇所を変更してください。

この方法は以下で紹介されているもので、なぜこのような記述になるのかの詳しい解説もあります。

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