記事の公開日と更新日、どっちもあってなお良い。アイコン付き

通常、既存のテンプレートとか使ってると、投稿の公開日は表示設定されているけれど、記事の更新日は設定されていないよね。

でも、いるよね?更新日。

てことで、随分前に入れてたんだけど忘れてたー!
公開日と更新日の表示

投稿の最終更新日を表示する

/*
  get_the_modified_time()の結果がget_the_time()より古い場合はget_the_time()を返す。
  同じ場合はnullをかえす。
  それ以外はget_the_modified_time()をかえす。
*/

function get_mtime($format) {
    $mtime = get_the_modified_time('Ymd');
    $ptime = get_the_time('Ymd');
    if ($ptime > $mtime) {
        return get_the_time($format);
    } elseif ($ptime === $mtime) {
        return null;
    } else {
        return get_the_modified_time($format);
    }
}

まず、↑上記をfunctions.phpに追加。

<span>公開日:<time class="entry-date" datetime="<?php the_time('c') ;?>"><?php the_time('Y年m月d日 l') ?></time></span> <span><a href="<?php bloginfo('home'); ?>/?monthnum=<?php the_time('m') ?>&amp;day=<?php the_time('d') ?>" class="olddays">〇年前のこの日、何してた?</a></span>				
<span><?php if ($mtime = get_mtime('Y年m月d日 l')) echo '最終更新日: ', $mtime; ?></span>

次に↑上記の様に、
「<?php if ($mtime = get_mtime(‘Y年m月d日 l’)) echo ‘最終更新日: ‘, $mtime; ?>」を、loop部分に挿入。

通常は、先述のとおり、公開日は設定されてるでしょうから、そのまわりらへんかな?

上記コードでは、10年日記へのリンクも書いてます。

newやupを付けてアピール

公開日から三日間は「new」を、更新日から三日間は「up」アイコンを付けてみました。

<p class="meta">
<span class="new"><?php
$days = 3; //Newを表示させたい期間の日数
$today = date_i18n('U');
$entry = get_the_time('U');
$kiji = date('U',($today - $entry)) / 86400 ;
if( $days > $kiji ){
echo '<img src="';
bloginfo('template_directory');
echo '/img/new.png" width="30" height="15" alt="new" />';

}
?>
公開日:<time class="entry-date" datetime="<?php the_time('c') ;?>"><?php the_time('Y年m月d日 l') ?></time></span>
<span><a href="<?php bloginfo('home'); ?>/?monthnum=<?php the_time('m') ?>&amp;day=<?php the_time('d') ?>" class="olddays">〇年前のこの日、何してた?</a></span> 
<span class="new"><?php if (get_the_modified_date('Y/n/j') != get_the_time('Y/n/j')) : ?>
<?php
$days=3; //UPをつける日数
$today=date_i18n('U');
$entry=get_the_modified_date('U');
$sa=date('U',($today - $entry))/86400;
if( $days > $sa ){
echo '<img src="';
bloginfo('template_directory');
echo '/img/up.png" width="30" height="15" alt="up" />';

}
?>
<?php endif; ?>
<?php if ($mtime = get_mtime('Y年m月d日 l')) echo '最終更新日: ', $mtime; ?></span>
<br /> 
				<?php if ( count( get_the_category() ) ) : ?>
					<?php printf( __( 'Categories: %2$s' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?>
					|
				<?php endif; ?>
				<?php
					$tags_list = get_the_tag_list( '', ', ' );
					if ( $tags_list ):
				?>
					<?php printf( __( 'Tags: %2$s' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?>
					|
				<?php endif; ?>
				閲覧数:<?php if ( function_exists ( 'wpp_get_views' ) ) { echo wpp_get_views ( get_the_ID() ); } ?>
					|				
				<?php comments_popup_link( __( 'Leave a comment' ), __( '1 comment' ), __( '% comments', 'ari' ) ); ?>
				<?php edit_post_link( __( 'Edit', 'ari' ), '| ', '' ); ?>
</p>

たぶん、更新日のアイコンは、「<?php if ($mtime = get_mtime(‘Y年m月d日 l’)) echo ‘最終更新日: ‘, $mtime; ?>」部分をなんとかしたらできる気がするけど・・・
PHP良くわからないので↑こんな感じになっちゃいました、、、
どなたか、ご教示くださいまし。

ちょっと、メタ部分が長くなったのと、個別記事ページには2か所、loopには1か所挿入しているので、管理がしやすいように、上のメタ部分を別ファイル、meta.phpとし、「<?php get_template_part(‘meta’); ?>」で呼び出して表示するようにしました。ちょっと、スッキリしました。

<h2 class="title"><?php the_title(); ?></h2>
<?php get_template_part('meta'); ?>

<?php the_content(); ?>
~
<?php dynamic_sidebar( 'adsense-widget-area' ); ?>
<?php dynamic_sidebar( 'after_singler-widget-area' ); ?>
~
<?php get_template_part('meta'); ?>
~

必要なワケ

勿論、せっかくいらしていただいた方にも親切だけど、Googleや他の検索サイトでは、この更新日をちゃんと理解してくれるようで、例えば、検索オプションで”期間指定”して検索した場合でも、この更新日に基づいて表示してくれるようです。
これで、昔に書いた記事でも、有意義な記事は生きてきますよね♪

最近、リニューアルしてサイトの昔の記事も掘り起こして手直ししているねこもりやとしては嬉しい限りでございます。

 

2013/12/28 どうやら今回の方法では更新日をGoogleの検索結果に反映できないようなので改良しました。

 

参考サイト

WordPressで記事の最終更新日を表示する方法 HTML5対応版

WordPressで最終更新日を表示する方法(予約投稿にも対応) | WP SEOブログ

ほんっとにはじめてのHTML5:[25] 新しい要素<time>で正確な日時を記述しよう

WordPress 記事の見直しと最終更新日の表記。それを Google に伝える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA