情報の種類によっては鮮度が落ちると意味をなさない記事というのがあります。イベント情報や技術ブログなどがそれに相当します。
そこで「この記事は○年前に書かれたものです。実情に沿わない点があるかも知れないので注意して下さい。」などの警告を出す方法を備忘録がてらまとめました。
特定の日付について新旧を判定する
特定の日を境に表示を切り替える方法。古い方に出すこともできるし新しい方に出すこともできます。使い方いろいろ。
特定の日付より古い場合にメッセージを出す
ある日を境にサイト構成をがらっと変えた場合などに有効です。無料ブログから独自ドメインに引っ越したときなどにどうぞ。おち研でもシェアボタンのところで類似の方法を使ってます。
【PHP】
$pastUrl = 'http://www.example.com/' .$post->post_name. '/';
if( strtotime(get_the_date('Y-m-d')) < strtotime('2015-01-01') ):
echo '<p>【おしらせ】この記事は旧サイトから持って来ました( 旧URL: ' .$pastUrl. ' )</p>';
endif;
strtotime()は、放り込んだ値をUnix時に変換するPHPの関数です。古いURLの記述はサイトごとに適切な表現に書き換えて下さい。
特定の日付より新しい場合にメッセージを出す
今度は(記事の日付ではなく)現在の時間と特定の日時を比べる方法。イベント告知なんかに使えます。
【PHP】
if( strtotime('now') > strtotime('2015-01-01') ):
echo '<p>【おしらせ】このイベントは終了しました。次回の開催が決定し次第お知らせします。</p>';
endif;
記事ごとに一定期間過ぎたらメッセージを出す
冒頭の「この記事は○年前に書かれたものです」を表示する方法。期間はお好みで。
【PHP】
if( date('U') - get_the_time('U') > 60*60*24*365 ): //365(日)を書き換えると期間が変わります
echo '<p>この記事は'. the_time('Y年n月j日') .'に書かれたもので現状に合わない可能性があります。</p>';
endif;
カテゴリーで振り分ける
一つのサイトで技術系の記事と雑記が混在してるような場合はカテゴリで振り分けると便利です。カテゴリごとに記事の性格が違って複数の条件判定を詰め込みたいときはIF文をネストして突っ込みます。
【PHP】
if( in_category('5') ):
//
//カテゴリID5のときに実行する処理いろいろをここに書く
//
if( date('U') - get_the_time('U') > 60*60*24*365 ):
echo '<p>この記事は'. the_time('Y年n月j日') .'に書かれたもので現状に合わない可能性があります。</p>';
endif;
endif;
処理が少ないときは1行ですませた方がスマートかも知れません。
【PHP】
if( in_category('5') && date('U') - get_the_time('U') > 60*60*24*365 ):
echo '<p>この記事は'. the_time('Y年n月j日') .'に書かれたもので現状に合わない可能性があります。</p>';
endif;
WordPress:古い記事にメッセージを表示させる際の備忘録 | NxWorld
更新日から経過日を見る
Stocker.jp さんで紹介されてた方法。記事の投稿日ではなく更新日で見てます。確かに時々情報をアップデートしてれば表示させる必要は無いですよね。これはアイディア。
【PHP】
if ( date('Y') - get_the_modified_date('Y') >= 2 ): //数字は「年」です
echo '<p>この記事は'. the_time('Y年n月j日') .'に書かれたもので現状に合わない可能性があります。</p>';
endif;
WordPressで、古い記事に警告を表示する方法 | Stocker.jp / diary
おわりに
去年サイトのディレクトリ構成を変えたときに、いくつかテーマに日付判定を入れてたので改めてまとめてみました。
なお、ご紹介したページのソースは自分が見やすいように条件式を変形してます。考え方って本当に人それぞれなんだなって思いました。参考になります。
コメントをどうぞ(´ω`*)