僕は、Googleで検索するとき、そのページの日付を結構見ます。
検索結果でいったらこの部分。
この日付が古かったら、新しい方の結果を見たり、古い記事ばかり出てきたら検索ツールを使って期間を「1年以内」とか「1ヶ月以内」などに絞ったりしています。
こういうふうに、記事などの日付を参考にして検索することって結構あって重要な情報だと思うんです。その重要な情報を、できれば検索エンジンにも正確に伝えたい。
ということで、今回はHTML5を使って正確に記事の日時(公開日or更新日)をGoogleに伝える方法です。
photo by David Precious
目次
functions.phpの編集
まずは、functions.phpに以下を追記します。(編集前にはバックアップを取ってください)
/* 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); } }
これは、予約投稿により、更新日よりも公開日の方が先になってしまうのを防ぐためのコードです。予約投稿してその後一切更新しないなんて場合、公開日付よりも更新日付の方が古くなり、混乱を招くのを防ぎます。
参考 WordPressで最終更新日を表示する方法(予約投稿にも対応) | WP SEOブログ
single.phpの編集
記事の公開日や編集日を検索エンジンに伝えるためにHTML5の<time>タグを使用します。<time>要素は「正確な日付や時刻を示す」要素です
詳しくは、以下を参照してください。
参考 ほんっとにはじめてのHTML5:[25] 新しい要素<time>で正確な日時を記述しよう
<time>を踏まえた上で、single.phpの記事の公開日と更新日を表示するところを以下のように編集します。
記事の公開日を優先して伝えたい場合
公開日:<time class="entry-date date published" datetime="<?php the_time('c') ;?>"><?php the_time('Y年n月j日') ;?></time><br> <?php if ($mtime = get_mtime('Y年n月j日')) echo '最終更新日:' , $mtime; ?>
記事の更新日を優先して使いたい場合
<?php if (get_mtime('c') == null) : ?> 公開日:<time class="entry-date date published" datetime="<?php the_time('c') ;?>"><?php the_time('Y年n月j日') ;?></time> <?php endif; ?> <?php if (get_mtime('c') != null) : ?> 公開日:<?php the_time('Y年n月j日') ;?><br> <time class="entry-date date updated" datetime="<?php if ($mtime = get_mtime('c')) echo $mtime; ?>"><?php if ($mtime = get_mtime('Y年n月j日')) echo '最終更新日:' , $mtime; ?></time> <?php endif; ?>
更新日は、先程functions.phpに記入したget_mtime()で取得します。
参考 WordPressで記事の最終更新日を表示する方法 HTML5対応版
まとめ
記事の公開日を<time>タグで囲むか、記事の更新日を囲むかは、ブログ管理者の判断によりまた変わってくると思います。
けれど、記事の公開日はもとより更新日をきちっと表記することは、読み手にとって記事の善し悪しを判断してもらう判断材料の一つになると思います。というのも、その日時情報により、その記事が「新しいものか古いものか」や「手入れのされている記事か(どのくらい前に修正されたか)」などがある程度わかるからです。
さらに検索エンジンにも正しい日時を伝えて、表示してもらうことにより、読み手により優しい記事になると思います。
はじめまして、いつも読ませていただいています。
Googleの検索結果に更新日時を反映させたくて、こちらのエントリを参考にカスタマイズを行いましたが、なかなか反映せず困っているところです。
寝ログさん自体はどういう風に設定されているのかなと思い調べたのですが、こちらの記事はGoogle検索には「2015/7/14」の日付が表示されています。記事自体にも更新日は「2015/7/14」と表示されているので、正しくGoogleに伝えられているのだと思うのですが、記事の更新日の部分のtimedateのマークアップは、「timedate=”2014-06-24T16:13:06+00:00″」となっています。
これは恐らく、この記事の公開日だと思うのですが、timedateで公開日が記されているのに、なぜGoogle側に更新日である「2015/7/14」が伝わっているのでしょうか??
ちなみに、この記事の構造化データを見てみると、hentryのundatedは「2015/7/14」とちゃんと認識されていました。
ひょっとして、timedataは特に関係なく、hentry>updatedの日時が伝わるのでしょうか??
もし何かご存知でしたら教えて頂けると嬉しいです。よろしくお願いいたします。