Googleのウェブマスターツールには、「構造化データ」という項目があり、HTMLのクラス名などでマークアップされたページの構造化データを見ることができます。
で、先月この項目を見たら、思いっ切りエラーが出ていたので
構造化データエラーが出たときの対策方法をテーマに対応させて現在は、エラーが0になっています。(途中のエラーも対策済み)
この「構造化データ」、Googleが推奨しているだけで、今のところ特に検索順位には関係ないそうです。ただ、やはり適切にマークアップしてエラーが出ないのが、一番気持ち良いのでエラー0を目指しています。
けれど先日、Simplicityサイトの方で、WordpressにbbPressというフォーラム作成用のプラグインをインストールしたら、またエラーが少し出始めました。
これは、フォーラム作成プラグインが、フォーラムやトピックを作成するごとに自動的にページを生成してしまうために起こります。それで何故エラーが出るかというと、フォーラムが生成するページには、hentryマークアップに必要な情報が足りないからです。
ということで、いろいろなプラグインをインストールしても、構造化データエラーが出ないようにするには以下の手順を踏む必要がありそうです。(単にエラーを出さないようにするだけなら構造化データを使用しないという手もある)
- 適切にマークアップして欲しい「投稿ページ」では構造化データのマークアップ方法を使ってマークアップを挿入
- それ以外のページではhentryのマークアップをしないようにする
1の構造化データのマークアップ方法は、前回書いたので、今回は、「投稿ページ」にのみhentryマークアップを挿入する方法を紹介します。
目次
「投稿」と「固定ページ」以外でhentryクラスを挿入しない方法
その方法は、以下のコードをテーマのfunctions.phpに貼り付けるだけです。(※この方法は、投稿ページは、hentryマークアップが挿入されるので、投稿ページには構造化データのマークアップ方法をする必要があります。)
//投稿ページ以外ではhentryクラスを削除する関数 function remove_hentry( $classes ) { if ( !is_single() ) { $classes = array_diff($classes, array('hentry')); } //これらのクラスが含まれたページではhentryを削除する $ng_classes = array('type-forum', 'type-topic');//ここに追加していく $is_include = false; foreach ($ng_classes as $ng_class) { //NGのクラス名が含まれていないか調べる if ( in_array($ng_class, $classes) ) { $is_include = true; } } //含まれていたらhentryを削除する if ($is_include) { $classes = array_diff($classes, array('hentry')); } return $classes; } add_filter('post_class', 'remove_hentry');
この関数は、投稿ページ以外では、Wordpressのpost_class()関数で自動的に挿入される、hentryクラスを除外しています。
あとは、この次のコード以下は、引数にtype-forum、type-topicというクラスが含まれているとhentryを削除する処理です。
$ng_classes = array('type-forum', 'type-topic');//ここに追加していく
こうすることで、bbPressが作成したフォーラムやトピックページでは、hentryが挿入されません。プラグインのインストールにより、独自のクラスが挿入される場合は、上記の配列部分に追記していきます。プラグイン対応は、もっとスマートな方法があるのかもしれませんが、今のところこんな方法しか思いつきませんでした。
参考 ウェブマスターツールの構造化データ(hentry)のエラー対策
動作確認
設定したあと動作を確認してみます。
構造化データエラーのチェックは、Google構造化データ テスト ツールを使えばウェブマスターツールにログインしなくても以下のページでチェックできるので、手軽に試せます。
試しにフォーラムページをチェックしてみるとエラーがなくなりました。
※表示されている構造化データは、全ページに挿入されているFacebook OGPと、Twitter Cardsのものです。
まとめ
これでおそらくエラーはなくなると思います。ただ、ちょっと強引な部分もあるのでもう少しスマートな方法を見つけたら、また書きたいと思います。
ウェブマスターツールの構造化データは、クロールされる毎に変更されるので、ページにクロールが来るまでは変化がありません。サイトの規模にもよりますが、エラー対策をしてもすべて反映されるまでには、1週間~4週間程度かかる場合があります
ということで、しばらくウェブマスターツールの経過を見守りたいと思います。