通常、メディアサイトの多くは、記事コンテンツを表示する際、特に何も考えずに公開日だけを表示させています。
これをやって良いのは新聞社だけで、それ以外の媒体がこの状態のまま放置しているのはとても損です。
- 記事をきちんと更新しているのかをユーザーに伝えられない
- Google検索に更新日や頻度を伝えることもできないため、検索エンジンからも更新がされていない記事という判定をされてしまう
米国で有名なマーケターであるNeil Patel氏もメルマガで下記のように述べていました。
Neil PatelCan you guess how many new posts I write for a week?
1.
Can you guess how many articles my team updates each week?
21.
My team spends 21x the effort that I do to update content.
Neil氏はすでに多くの優良コンテンツを作成済みであるため、このような方針をとっているようです。
私も含めてほとんどのマーケターが実際に週1しか記事を書かないのは問題なので、新規記事の作成数を参考にすべきではないです。
しかし、1週間に修正して、更新している記事数は参考になりますし、実績をあげている方がこれほど過去コンテンツをリブートさせるのに時間を割いていることを踏まえると、更新に関する情報を伝えないのは明らかに損です。
そのため、この記事ではユーザーにもGoogle 検索エンジンに対しても更新日を適切に伝えるために私がWordPressサイトで行っている施策を紹介したいと思います。
WordPressの機能を使って更新日を表示する最適な方法
WordPressは大変便利で、更新日をデータベースに都度保存してくれるので、開発の手間はかかりません。
問題は、ほとんどのテーマは更新日の表示まで配慮していないことです。
更新日の反映を行うには、get_the_modified_date()
関数を使います。
ただし、ユーザーに伝える場合とGoogle検索に伝える場合とでは対応が異なる部分がありますので、別物と捉えて作業を行いましょう。あらかじめ子テーマの準備をした上で続きを読んでください。
ユーザーに伝える場合
ユーザーが記事の更新日を確認できる機会は3つあると考えています。
- アーカイブページ
- 記事詳細ページ
- 検索結果ページ
アーカイブページ
アーカイブページは検索エンジンから訪問して直帰するようなユーザーには閲覧されませんが、一度サイトのファン(顧客)になったユーザーは確実に毎日参照するページです。
よって更新日は非常に重要になってきます。
ちなみに、本稿の論点ではありませんので割愛しますが、アーカイブページ上で、記事を公開日順ではなく、更新日順で表示することも検討すべき戦略の1つです。
ただし、アーカイブページの表示枠はそんなに広くありません。
そのため、メタ情報はカテゴリーと公開日になっていると思います。
この挙動を変えるべきです。カテゴリーはそのままにして、公開日を更新日に変えましょう。
公開日は大体下記のいずれかで構築されていることが多いので、探してください。
get_the_date()
the_date()
テーマによってはこれらを内包したカスタム関数を使うケースもあります。
これを下記のいずれかに変えます。
get_the_modified_date()
the_modified_date()
こうすることで、公開日から更新日に変更ができます。
当サイトもこのような作業で更新日の表示を実現しています。
私が実際に挿入しているコードは下記です。
<span class="mr-1"><time class="date mr-2 updated"
datetime="<?php echo esc_attr( get_the_modified_date( DATE_W3C ) ); ?>"><i
class="icon-refresh mr-1"></i><?php echo wp_kses_post( get_the_modified_date() ); ?></time></span>
記事詳細ページ
記事詳細ページはアーカイブページと違い、表示領域に余裕があるわけですから、更新日と公開日の両方を表示させています。
適用に使う関数などはアーカイブページと同じなので、割愛します。
私のサイトの表示は下記のようになっています。
検索結果ページ
検索結果ページには日付情報が表示されません。なのでタイトルタグに更新日を常に表示しています。
ただし、この方法を適用するには2つ注意が必要です。
- 嘘にならないこと: ただ最終更新日だけ更新するコンテンツは意味ないです。Googleは更新されているかを実際のコンテンツの変更履歴からも判断します。
- 更新日の更新を忘れないこと : 記事を更新しても、タイトルタグの更新を忘れてしまう人も多いです。私はここを自分のスクリプトで自動化させています。
これを適用するもっとも簡単な方法は、編集画面のタイトルに更新日を手入力することですが、プラグインまたは自作のコードを使って、タイトルタグの先頭に日付を追加することで、検索結果に表示される時だけ日付情報を付与することも可能です。
All in one seoやYoast seoなどのプラグインでできるかどうかを確認してみてください。この記事はプラグインの解説がメインではないので割愛します。
Google 検索エンジンに伝える場合
Google検索エンジンにきちんと伝える場合もう一手間必要です。SEO対策にGoogleが推奨しているものに構造化マークアップというものがあります。
その中の1つにArticleという構造化メニューがあるのですが、この中で決められているルールにしたがって、適切に記事の公開日・更新日を記入することが重要になってきます。
私の記事は全てこれに対応しています。
このように構造化データを提供することで、Googleはサイトの更新頻度や公開日を把握できます。
これも、All in one seoやYoast SEOといった有名なSEOプラグインは対応しているはずなので、確認してみてください。
ちなみに、過去開発の名残で入れたままなのですが、構造化マークアップに対応する余裕がない場合でも、下記のように<time>タグに属性を記入することで、Googleが把握する手助けになります。
<span class="mr-1"><time class="date mr-2 updated"
datetime="<?php echo esc_attr( get_the_modified_date( DATE_W3C ) ); ?>"><i
class="icon-refresh mr-1"></i><?php echo wp_kses_post( get_the_modified_date() ); ?></time></span>
DATE_W3Cが重要で、これは日付の情報をGoogle検索エンジンが理解できるフォーマットで出すのに必要です。
予約投稿時に更新日が公開日よりも前になってしまう現象への対応
更新日をメインにサイトの時刻を運用しようとすると、予約投稿を設定した際、公開日より更新日が前の時間になってしまいます。
WordPressは更新日の定義を「最終編集日時」としているため、公開日とはそもそも仕様が違います。
予約投稿をした場合、予約投稿を設定した時点が最終編集日時であり、公開日はその後になるわけで、これは正常な挙動です。
そこで、予約投稿時に起こるこの現象を回避するには、mu-pluginsフォルダに下記のPHPコードを書いたファイルを追加する必要があります。
function cst_update_post_modified_date_for_scheduled_post($data) {
if ($data['post_status'] == 'future') {
$data['post_modified'] = $data['post_date'];
$data['post_modified_gmt'] = $data['post_date_gmt'];
}
return $data;
}
add_filter('wp_insert_post_data', 'cst_update_post_modified_date_for_scheduled_post', 99, 1);
このコードは予約投稿を設定した時に記事の更新日を値を公開日の値で上書きして保存させるためのコードです。
これでこの問題は解決しますが、対象になるのは今後予約投稿を設定した記事のみです。