WordPressで「Schema.orgの構造化データをマークアップ」する機会がありまして、下のコードはFoundationPressのテーマファイル「single.php」内にマークアップを行った例を部分的に抜き出したものです。
構造化データのマークアップ(1部)
<article itemscope itemtype="http://schema.org/Article" id="post-<?php the_ID(); ?>" <?php post_class('clearfix'); ?>>
で、うまくマークアップされたかな?と思って「構造化データ テストツール」を使うと・・・以下のようなエラーメッセージが出ました。
エラー出ちゃった
エラー: Missing required field "updated". エラー: Missing required hCard "author".
こちらの記事「Remove WordPress hentry Class from Pages」を参考にしたんですが、どうやらWordPressのpost_class()で自動で付与されるclass名「hentry」があると、上記のようなエラーメッセージが表示されてしまうらしいです。
ほんとはこちらの記事「hatom-feed hatom-entry Error – WordPress Solution」にあるように、更新日と著者情報をエラーが出ているページ内に追記して、マークアップする方法がいいんだろうけど、意図的に表示しない場合だってある。
というわけで、post_class()を使っても「hentry」を出力させない(hentryを削除するって意味)という方法にしました。幸いにも参考記事「Remove WordPress hentry Class from Pages」にコードもあわせて掲載されていましたので、使わせていただきました。(ほとんどそのまんまですが・・・)
以下のコードを使用中のテーマフォルダ内にある「functions.php」に追記します。
PHPコード
function themeslug_remove_hentry( $classes ) { $classes = array_diff( $classes, array( 'hentry' ) ); return $classes; } add_filter( 'post_class','themeslug_remove_hentry' );
せっかくの機会なんで、上のコードは何をしているかをざっと理解する
「array_diff」を使って配列が格納されている「$classes」と「array(‘hentry’)」との差分を出して、値を返しているって感じです。フィルターフック「post_class」使用。なるほど~、そういうやりかたあるんだなぁ・・・勉強になりました。
他にももっといい方法があるかもしれませんが、今のところこれでOK.というわけで、何かのご参考となりましたら幸いです。
このページを共有する