サイドバーやトップページの新着記事一覧で、更新した記事に印をつける方法です。
新着記事にマーカーを入れる方法はよく見ますが、こっちは過去記事を目立たせるバージョンとなります。
WordPressを日記ではなく情報重視のサイト作りをしている場合は過去記事に追記を加えることも多いと思いますが、そういうとき用のコードです。
記事に追記したら「更新」マークをつける
こういうの作ります。
記事の公開日と更新日を取得して、更新日の方が遅かったら印を付けます。
更新記事に印を付けるコード
まずは更新したことをテキストで知らせる場合のコードです。
【sidebar.php】
$published = get_the_time('U');
$updated = get_the_modified_date('U');
$elapsed = $updated - $published;
if( $elapsed > 0 ){
echo '<span>更新</span>';
}
投稿日の取得は get_the_time()、更新日の取得には get_the_modified_date() を使います。
もっと目立たせたいときは span にクラスをつけてCSSで整えると良いでしょう。
更新マークに画像を使う
更新マークにテキストではなく画像を使うことも可能です。テーマ内のCSSディレクトリ等に格納して呼び出せばOK。
【sidebar.php】
$published = get_the_time('U');
$updated = get_the_modified_date('U');
$elapsed = $updated - $published;
if( $elapsed > 0 ){
echo '<img src="' .get_stylesheet_directory_uri(). '/CSS/updated.png" alt="更新" />';
}
新着記事を更新日ベースで表示する
次に新着記事一覧を更新日ベースに変更します。
【sidebar.php】
<?php
$news = get_posts('numberposts=5&orderby=modified');
foreach($news as $post):
setup_postdata($post);
?>
<li>
<a href="<?php the_permalink();?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
<?php
$published = get_the_time('U');
$updated = get_the_modified_date('U');
$elapsed = $updated - $published;
if( $elapsed > 0 ){
echo '<span>\更新/</span>';
} ?>
</li>
<?php endforeach; wp_reset_postdata(); ?>
表示する記事数は2行目の numberposts の数字をお好みに増減して下さいませ。
新着記事を表示するためのコードは他の書き方をしても全然構いません。現在使用中の新着記事一覧のコードを【orderby=date】から【orderby=modified】にすれば問題なく動くと思います。
その上で更新の表示を足して下さい。
コピペで動くように直書きしてますが、関数化して外に追い出した方がHTMLとの交ぜ書きが減って少しスッキリします。ページ内で何度も使いたい方はそっちがオススメ。(・∀・)
【 更新履歴等 】
2014/09/22 初稿発表
2016/04/13 コード修正しました
旧URL /2014/09/22/modified-article-marker/
コメントをどうぞ(´ω`*)