WordPressのウェブマスターツールでのMicroformats問題の対処

WordPressのウェブマスターツールでのMicroformats問題の対処

Posted at January 27,2014 3:33 AM
Tag:[Microformats, WordPress]

WordPressのウェブマスターツールでのMicroformats問題の対処方法について紹介します。

1.はじめに

WordPressユーザー要注意!〜構造化データのエラーでアクセス激減」で知りましたが、WordPressで

<?php post_class(); ?>

という、記事の投稿情報のクラス属性値を表示するテンプレートタグを利用している場合、Microformatsの構成要素である「hentry」というclass属性値を出力するのですが、その他のMicroformatsの必須要素である、

  • updated
  • author

などがclass属性値として存在しない場合、ウェブマスターツールの「検索のデザイン」→「構造化データ」で大量のエラーが発生する、ということらしいです。

2.hentryの構成要素

hentryの構成要素は次のとおりです。

  • entry-title:記事のタイトル(必須)
  • entry-content:記事の内容(任意)
  • entry-summary:記事の概要(任意)
  • updated:更新日時(必須、ただし存在しない場合はpublishedを参照?)
  • published:公開日時(任意)
  • author:ユーザー名(必須)
  • bookmark:パーマリンク(任意)
  • tags:タグ(任意)

元記事ではhentryを出力しているpost_class()を削除する対処としていますが、個人的にはpost_class()はそのままにして、hentryの必須要素を網羅するのが本来ではないかと思います。

ので、次項で必須要素である、

  • entry-title
  • updated
  • published
  • author

の設定例について紹介します。

なお、hentryの仕様はさらに更新されているようなので、もしかしたらここに掲載している内容は過去のものかもしれません。2014年1月現在、ウェブマスターツールではMicroformats2未対応です。

h-entry

3.entry-titleを設定する

entry-titleは以下のように設定します。テーマ「Twenty Fourteen」のcontent.phpの抜粋です。

if ( is_single() ) :
    the_title( '<h1 class="entry-title">', '</h1>' );
else :
    the_title( '<h1 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h1>' );
endif;

4.published/updatedを設定する

published/updatedは以下のように設定します。

function.phpに以下を設定

function get_mtime($format) {
    $mtime = get_the_modified_time('Ymd');
    $ptime = get_the_time('Ymd');
    if ($ptime > $mtime) {
        return get_the_time($format);
    } elseif ($ptime === $mtime) {
        return get_the_time($format);
    } else {
        return get_the_modified_time($format);
    }
}

content.phpなどに以下を追加

公開日:<abbr class="published"><?php the_time('Y年n月j日') ;?></abbr>
<?php if ($mtime = get_mtime('Y年n月j日')) echo '最終更新日:', '<abbr class="updated">'.$mtime.'</abbr>'; ?>

5.authorを設定する

authorは以下のように設定します。

<span class="byline"><span class="author vcard"><a class="url fn n" href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) ?>" rel="author"><?php echo get_the_author(); ?></a></span></span>

テーマ「Twenty Fourteen」のtwentyfourteen_posted_on()から抜粋して手を加えました。

6.構造化データを確認する

正しいMicroformatsであることを確認するには、ウェブマスターツールの「構造化データ テスト ツール」を利用してください。

URLまたは出力したソースをはりつけて「プレビュー」をクリックするだけです。

OKの場合
OKの場合

NGの場合
NGの場合

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)