edo1z blog

プログラミングなどに関するブログです

google search consoleで「updated がありません」と言われる

googleのsearch consoleで「updated がありません」と言われます。 記事の更新日時を表示しているタグのクラスをupdatedにする必要があるらしい。

タグにupdatedとつけることで、検索エンジン等がこのデータは更新日時を表しているのだなと分かるようになります。このupdatedのようなものを構造化データと呼ぶそうです。

ちなみに、この構造化データについてテストできるツールが下記です。URLを入れると、そのページの構造化データを全部取得・表示し、問題ないか教えてくれます。でもこれで、search consoleでエラーが出ているURLを入力しても、エラーは表示されない。

Structured Data Testing Tool

wordpressの記事更新日時タグのクラスをupdatedにする

wp-contentというディレクトリに、テーマとかプラグインが入っているようです。私は今ampleというテーマを利用していますが、wp-content/themes/ampleにそのテーマのファイルが入っていました。どのファイルに該当箇所があるのか検索します。

$ grep -rn 'entry-date published' *
inc/functions.php:415:         $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time>';

ソースコードは下記のようになってました。

$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
  $time_string .= '<time class="updated" datetime="%3$s">%4$s</time>';
}

作成日時と更新日時が異なる場合のみ、updatedクラスのタグを追加しています。でも画面には作成日時しか表示されないので、updatedクラスのタグはdisplay:noneとかにしてあるようです。全く問題ない気もしますが、更新日時がない場合は、作成日時と同じ日時でupdatedクラスのタグを表示させるようにコードを修正します。

$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
  $time_string .= '<time class="updated" datetime="%3$s">%4$s</time>';
}else{
  $time_string .= '<time class="updated" datetime="%1$s">%2$s</time>';
}

Structured Data Testing Toolでみると、作成日時と更新日時が違う場合でないと、検証結果にupdatedが表示されませんでした。search consoleもすぐにテストできないみたいなので、しばらく時間経ってから確認してみたいと思います。

参考: WordPress で構造化データエラー(entry-title, updated, author)にハイブリッド対応 WordPressの仕組みを理解する