authorがありません entry-titleがありません updated がありません Serach Console
hentryのmicrofomats.orgのマークアップが足りない、という意味ですが、構造化テストツール使用するも目立ったエラーがありません。
目次
1.hentryとは
hentryは、構造化マークアップ方法の一つ「hatom」のタイプです。
構造化マークアップとは、サイトを巡回している検索ボットにサイトの細かい情報を与える「microformats.org」の設定をするためのマークアップ(HTMLに書く)方法です。
microfomatsについて(原文英語→日本語版できていました。)
WordPressのテーマの中には、hentryを採用し構造化マークアップをしているものがあります。
hentry自体は、「post_class();」からclass名として呼び出されているclass属性です。
主にdivタグやspanタグに記述し、各情報タイプごとのclass名を記入しています。
hentry:記事の内容、articleタグなどに記述
entry-title:タイトル
entry-content:記事内容
published:公開日
updated:更新日
author:著者
tag:タグやカテゴリー(URL)
bookmark:ブックマーク
特定の情報(例えばタイトル、公開日、電話番号など)を検索エンジンに提供します。
hentryの役割はMicrodataでいうところのitemscope、すなわち構造化の宣言です。
1つのWEBサイトにitemscopeあるいはhentryなど、どれか1つ構造化のマークアップがあれば問題ありません。しかしWordPressのテーマによっては、hentryの記述のみがあり肝心のプロパティがないゆえにエラー表示されます。
まとめると、hentryは構造化の宣言であり、class属性なのでclassとして記述する。記述したらauthorなど必須のプロパティを記述しなくてはならない。
さて、hentryエラーの解決方法は3つあります。
class名hentryの削除、function.phpに追記し削除、hentryの足りないプロパティを追加です。次から順を追って説明します。
2.hentryのあるclassをすべて消す
「post_class()」関数を探し削除する方法です。この関数は全てのclass属性を呼び出すWordPressの関数です。記事内のHTMLからarticleタグを見つけると次のように記述しています。
<article id="ex" class="post- post type- status- format- hentry category- category-">
ここからclass属性のhentryのみ削除したいと思います。
PHPファイル(single.php)では下記のように記述されています。
<article id="" <?php post_class(); ?>>
ここから<?php post_class(); ?>
を削除し、 <article id="">
にします。
しかしclass属性が全削除されるので、CSSが反映されずデザインが崩れてしまいます。
そこであらかじめclassをコピーしておき、<?php post_class(); ?>
を削除、その後にコピーしておいたclass=””をペーストします。
<article id="" class="post- post type- status- format- category- category-">
このようにhentry以外のclass名を追記します。
3.hentryのみ削除するPHP
こちらのコードを参考にしてください。変更前にバックアップ推奨です。
function remove_hentry( $classes ) {
$classes = array_diff( $classes, array( 'hentry' ) );
return $classes;
}
add_filter( 'post_class','remove_hentry' );
hentryのみ消えます。挿入箇所はPHPファイル「function.php」の一番下です。もしエラーが表示されたり、サイトが真っ白になったら削除します。
4.hentryのマークアップ方法
hentryを削除せず、hentryが反映されるclass名を追記して構造化をマークアップしていく方法です。
海外では消さずにマークアップしていく傾向にあるようです。
検索エンジンのbotが登録しやすくなるなら追加していった方がいいかもしれません。
基本は個別記事に対しては「single.php」、トップページなら「index.php」とエラーが起きたページにマークアップしていきます。
WordPressのテーマによってエラー箇所が異なるかもしれませんが、PHPファイル内のhtmlタグから該当する箇所にclass名を追記していきます。
(下記では「single.php」ファイル編集)
authorの場合は、「get_the_author() 」か「itemprop=”author”」を探します。 「F+Ctrl」でauthorの単語で見つかります。 該当箇所はauthorの情報が出力されるコードです。 私の場合は
<span class="meta-top__author" itemscope itemtype="http://schema.org/Person" itemprop="author">
中略
<meta itemprop="name" content="<?php echo esc_attr( get_the_author() ); ?>"> </span>
「get_the_author()」のphpを囲うspanタグにclass名を追記します。
class属性「vcard author」と「fn」が必須です。
新たにタグを追記し「vcard author」の中に「fn」のあるタグを囲まないと(入れ子にする)反映されません。
つまり下記のようにspanタグとclass名を追記します。
<span class="vcard author">
<span class="meta-top__author fn" itemscope itemtype="http://schema.org/Person" itemprop="author">
中略
<meta itemprop="name" content="<?php echo esc_attr( get_the_author() ); ?>"> </span>
</span>
4-2.entry-titleがありませんの対処
php関数の「the_title();」を探してもいいですが、必ずしも該当の見出しに当たらない(パンくずリストやnavタグ(ナヴィゲーション)に入っているサイトもある)ので、h1タグを探すと見つけやすいです。
<h1 class="post__title" itemprop="headline"><?php the_title(); ?></h1>
entry-titleのclass名を追記します。
<h1 class="post__title entry-title" itemprop="headline"><?php the_title(); ?></h1>
4-3.updated がありませんの対処
投稿日はdateの単語を探すかtimeタグを探すと該当箇所にたどり着きます。
私の場合はtimeタグでした。
<time class="meta-top__date" datetime="" itemprop='datePublished'>2017---- </time>
ここにupdatedを追記します。
<time class="meta-top__date updated" datetime="" itemprop='datePublished'>2017---- </time>
5.解決後のテスト結果
エラー表示のclass名をすべて記述すると、エラーがなくなり構造結果が情報ごとに表示されるようになりました。
hentry エラーなし 警告なし
@type hentry entry-titlehentryエラーの対処法 updated 2017年1月7日 author @type hcard fn by nora