フリーランスWEB屋の備忘録

hentry (マークアップ: microformats.org) 構造化データエラー が出たときの対処方法

本日、Google Search Console を眺めていた時に、たまたま変なところでクリックしてしまっていたようで、「構造化データ > hentry (マークアップ: microformats.org)」が表示されました。もともとの目的だった項目をクリックしようとすると、グラフのようなものが目につきました。

普段はほとんど気にしたことがなく、初めてみる画面だったので、もう一度「検索での見え方」から「構造化データ」を開いてみました。すると、「3 エラーが発生したアイテム」となっているので、なんじゃこれはと思い調べてみることにしました。

hentry 構造化データのエラー

エラーのグラフをみると、どうもGoogleに認識され始めた頃から出始めていたようです。

エラーが気になったので、「 hentry 」の詳細をみてみました。すると、エラーの項目に「 author がありません」と表示されていました。

初めて聞く「 hentry 」という単語がわからず、とりあえずGoogleで調べてみました。すると、原因はどうやらWordPressの単一記事の投稿(single.php)のところに問題があるということが分かりました。

しかし、 hentry 構造化データのエラーが出ているといっても、 SEO 的に評価が落とされるわけではないようです。単に、「このページには、こういうことが書かれていますよ」という、検索エンジン向けのメッセージが書かれていないだけなので、SEOにはあまり影響はありません。しかし、エラーが出ているというのは、何ともスッキリしないので対処法を調べてみました。

今回の場合は、「 author がありません 」というエラーだけでしたが、この他にも「entry-title」と、「updated」も同様のエラーが出るようです。

このエラーが出る原因は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の対処法は、たったこれだけです。

「updated がありません」 の対処法

updatedの対処法もentry-titleの対処法と同じく簡単です。公開日を囲んでいるHTMLタグのclassに「date updated」を追加してやるだけです。

私の場合はすでにテーマの方で対策済みだったのでこのエラーは出なかったのですが、私の場合はこのようなコードになっていました。

<time class="entry-date date updated" datetime="<?php the_time(DATE_W3C); ?>">
<?php the_time( 'Y/m/d' ); ?>
</time>

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

authorは、entry-titleやupdatedの時より少し複雑ですが、普段からWordpressのカスタマイズをしている人なら大したてことではないと思います。

著作者( author )のところにこのように書いてやればOKです。

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

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

<p class="author">
執筆者:<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author(); ?></a>
</p>

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

<p class="author vcard author">
執筆者:<span class="fn">
<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author(); ?></a>
</span>
</p>

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

hentry 構造化データのエラー対処法のまとめ

構造化データの存在は知っていたものの、細かい設定方法やエラーに関しての対処は初めておこないました。
他のサイトでも紹介されているように、恐らく今回の構造化データは、きちっとした設定をしていなくても SEO 的には影響することは少ないと思います。しかし、Googleさんが、わざわざ意味のないことを指摘しないだろうと思うので、やらないよりかはしっかりと設定しておいた方がいいように思います。