昨日ウェブマスターツールを眺めていました。
そして何となく、メニューの「検索のデザイン→構造化データ」を開いてみました。
すると、hentry構造化データのエラーという、何だかよくわからないエラーが出ていました。
目次
hentry構造化データのエラー
エラー発生グラフなどをみてみるとどうやら、このブログを始めた頃から、hentry構造化データのエラーが出ていたようです。
hentryという構造化データにエラーが出ています。
構造化データといえば、パンくずリストにも使用していますが、それはOKなようです。
で、気になったので詳細ページを開いて見ました。それがこちら。
どうやら、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でも、今回の構造化データをキチッと取り込んで、本日中にでもバージョンアップしたいと思います。