ウェブマスターツールで「hentry(マークアップ: microformats.org)」構造化データエラーが出たときの対策方法

昨日ウェブマスターツールを眺めていました。

そして何となく、メニューの「検索のデザイン→構造化データ」を開いてみました。

ウェブマスターツールメニュー

すると、hentry構造化データのエラーという、何だかよくわからないエラーが出ていました。

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

hentry構造化データのエラー

エラー発生グラフなどをみてみるとどうやら、このブログを始めた頃から、hentry構造化データのエラーが出ていたようです。

構造化データのエラー

hentryという構造化データにエラーが出ています。

構造化データといえば、パンくずリストにも使用していますが、それはOKなようです。

で、気になったので詳細ページを開いて見ました。それがこちら。

hentry(マークアップ microformats.org)

どうやら、Wordpressの記事ページ(single.php)のところに問題があるようです。エラーが出ているページのURLは、すべて記事ページです。

ただ、構造化データのエラーが出ているからといって、SEO的に悪い評価がされるわけではないと思います。単に、ここのHTMLには、「こういうことが書かれていますよ」という、検索エンジン向けのメッセージが書かれていないだけです。

けれど、せっかく構造化データエラーが出ているのだから、きちっと書き込んで完全な構造化データにしたほうが気持ち良いので修正してみることにしました。

それで、どこがダメなのか探るために適当なページのURLをクリックして、ライブデータのテストをしてみました。

マークアップのテスト

すると以下のような結果が出ました。

抽出された構造化データ

エラー: Missing required field “entry-title”.

エラー: Missing required field “updated”.

エラー: Missing required hCard “author”.

entry-titleと、updatedと、authorというのが入っていないようです。

調べてみると、このエラーが出る原因は、Wordpressのテーマにpost_class()が使われていると、hentryクラスが吐き出されることで起こるようです。

post_class()によって、エントリーにhentryという構造化データを使う宣言がされているのに、「エントリーのタイトル(entry-title)とか更新日(updated)とか記事著作者(author)のデータが指定してないぞ!」ということみたいです。

entry-title、updated、authorエラーの修正の仕方

それぞれのエラーの修正方法を説明します。

「entry-title がありません」への対策

entry-titleの対策といっても、やることは簡単で、記事のタイトルとなるHTML要素のclassにentry-titleを追加してやるだけでOKです。

WordPressの場合だと、single.phpを開いてタイトルを含んでいる見出しタグにclassを追加してやります。

例えばこんな感じだったのを

<h1><?php echo get_the_title(); ?></h1>

このようにしてやります。

<h1 class="entry-title"><?php echo get_the_title(); ?></h1>

entry-titleの対策は、これだけでOKです。

「updated がありません」 への対策

updatedの対策も簡単です。公開日を囲んでいるHTMLタグのclassに「date updated」を追加してやるだけです。

僕の場合だとこんなのだったのを

公開日:<time class="entry-date" datetime="<?php the_time('c') ;?>"><?php the_time('Y/n/j') ;?></time>

このように変更しました。

公開日:<time class="entry-date date updated" datetime="<?php the_time('c') ;?>"><?php the_time('Y/n/j') ;?></time>

「author がありません」への対策

authorは、先程よりは複雑ですが、普段Wordpressのカスタマイズをしている人ならなんてことないと思います。

記事の著作者のところにこんなふうに書いてやればOKです。

<span class="vcard author"><span class="fn">記事の著作者名</span></span>

僕の場合は、このようになっていたのを、

<span class="post-author">
  <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author(); ?></a>
</span>

以下のように変更しました。

<span class="post-author vcard author">
  <span class="fn">
    <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author(); ?></a>
  </span>
</span>

※わかりやすいように余分なコードは省きました。

修正後

構造化データを修正したあと、また先程のライブデータテストを行ってみました。

マークアップのテスト

すると今度は、エラーが出ず、entry-title、updated、authorともども適切なデータが表示されました。

抽出された構造化データ(正常化)

まとめ

こういった、記事タイトル、更新日、著作者、タグなどを検索エンジンなどに伝える構造化データがあるとは知りませんでした。

多分、今回の構造化データは、きちっと設定しなくてもSEO的に大きく影響することはないと思います。ただ、設定していないよりは、していた方が良いとは思います。というのも、ウェブマスターツールが、わざわざ意味のないことを指摘してこないだろうと思うので。

ということで、この前作成したWordpress無料テーマのSimplicityでも、今回の構造化データをキチッと取り込んで、本日中にでもバージョンアップしたいと思います。