記事の更新日をHTML5対応にして正しくGoogleに伝える方法[WordPressカスタマイズ]

時計

僕は、Googleで検索するとき、そのページの日付を結構見ます。

検索結果でいったらこの部分。

Google検索結果の日付

この日付が古かったら、新しい方の結果を見たり、古い記事ばかり出てきたら検索ツールを使って期間を「1年以内」とか「1ヶ月以内」などに絞ったりしています。

Google検索結果 検索ツール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>タグで囲むか、記事の更新日を囲むかは、ブログ管理者の判断によりまた変わってくると思います。

けれど、記事の公開日はもとより更新日をきちっと表記することは、読み手にとって記事の善し悪しを判断してもらう判断材料の一つになると思います。というのも、その日時情報により、その記事が「新しいものか古いものか」や「手入れのされている記事か(どのくらい前に修正されたか)」などがある程度わかるからです。

さらに検索エンジンにも正しい日時を伝えて、表示してもらうことにより、読み手により優しい記事になると思います。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

スポンサーリンク

『記事の更新日をHTML5対応にして正しくGoogleに伝える方法[WordPressカスタマイズ]』へのコメント

  1. 名前:nyaax 投稿日:2016/09/09(金) 07:18:04 ID:9c638dd0d

    はじめまして、いつも読ませていただいています。

    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の日時が伝わるのでしょうか??

    もし何かご存知でしたら教えて頂けると嬉しいです。よろしくお願いいたします。

  2. アバター画像 名前:わいひら 投稿日:2016/09/09(金) 16:24:39 ID:13eebc57f

    記事の更新日の部分のtimedateのマークアップは、「timedate=”2014-06-24T16:13:06+00:00″」となっています。

    これは、テーマ側の不具合でこのようになっているだけだと思います。

    上記記事でも、Google側に更新日が伝わる時は伝わるのですが、確実に反映させるには、更新日がある記事は、公開日を非表示にするしかないのかもしれません。
    当サイトも、そのおかげで伝わっているのだと思います(時間の設定不具合があったなのに伝わるぐらいなので)。
    ただ、Googleのアルゴリズムもわからないので、これらの検証には時間がかかるため、僕も100%確実とは言えないのでご了承ください。僕も最近試し始めたばかりなので。

  3. アバター画像 名前:わいひら 投稿日:2016/09/09(金) 16:33:11 ID:13eebc57f

    あと記事中のコードを、リッチスニペット用にtimeタグ内のclassにpublishedやupdatedを加えたコードに変更しておきました。

  4. 名前:nyaax 投稿日:2016/09/11(日) 08:22:11 ID:ac963237a

    お返事ありがとうございます。私もあれから色々と試してみました。

    MicroformatsとMicrodataともに正しく(?)マークアップし直して、この機会に構造化エラーにも対応しました。あと、ひょっとしてsitemap.xmlのlastmodが関係しているのでは?と思い、間違いないか確認し再送信も行いました。

    まだ検索結果には反映していませんが、しばらく様子を見て、どうしても反映しないようだったら、公開日を非表示にしようと思います。

    記事中のコードを変更されたとのことで、更新日が2016/9/9になっているので、早速Google検索結果をチェックしてみましたが、日付が消えてしまってますね。またしばらくしたら表示されるのかもしれませんが…。

    色々な記事を見て検証してますが、確かに、公開日と更新日をどちらも表示しているWebページで更新日がちゃんとGoogleに伝わっているものは今のところ見つけていませんので、どちらも表示すると公開日が優先して表示されてしまうのかもしれませんね。

  5. アバター画像 名前:わいひら 投稿日:2016/09/13(火) 13:15:04 ID:be2062334

    今、検索を確認してみたところ表示されているようです。
    検索結果の日付表示

    ただ、検索結果の日付の表示は、自分のサイトでも表示されているものと表示されていないものもあり、どういった基準のものが表示されていないのか、いまいちよくわかっていなかったりします。

  6. 名前:nyaax 投稿日:2016/09/16(金) 13:44:18 ID:8d747f146

    こちらの記事、きちんと日付表示されましたね。先ほど私も確認しました。
    結構調べたつもりですがこの件についての情報なかなか見つかりませんね。日付をどう反映させるかって結構重要なことの気がしますが…。
    どのみちまた基準が変わるような気もするので、しばらく注意しておこうと思います。
    対応ありがとうございました!

  7. アバター画像 名前:わいひら 投稿日:2016/09/16(金) 19:54:55 ID:56721f239

    そうなんですよね。
    これに関する情報はあまり見つからないんですよね;
    結局は、自分で動作確認するしかないのですが、動作確認するにも反映されるまでかなり待つ必要があるという…。
    僕がこれまでわかったことは、「この記事の方法でも、更新日が反映されることはあるけど、かなり時間がかかったり反映されないことがある」ということと、「更新料を確実に伝えたいならば公開日を非表示にする必要がある」ということぐらいでしょうか。今のところ。
    僕も今後、いろいろ試せれば試してみたいと思います。
    この度は、書き込みのおかげで、いろいろと気づくことができました。ありがとうございます。