Search Consoleの構造化データ:「author/updatedがありません」への対処(TwentyFifteen)

Search Console、「authorがありません」「updatedがありません」

[2015/11/24]追記:「updatedがありません」エラーは完全に消えました。「authorがありません」への対処への追記があります。

Search Consoleの「構造化データ」でしばらく前から「authorがありません」と「updatedがありません」というエラーが出始めました。しかし、「構造化データテストツール」でテストすると「問題ありません」と言われてしまいます。大丈夫だろうか?と思っていましたが、放置してもエラーが収まらないので対処することにしました。

構造化データのエラー

Search Consoleでチェックするには、Search Consoleにログインして、「検索での見え方」から「構造化データ」をクリック。

ブログは問題なさそう

TwentyFifteenだとブログの方には、デフォルトで「ユーザ名」、「公開日」、「更新日」情報が表示されているので問題なさそうです。更新日はスタイルシートで表示させないような指定がされていますので、ブラウザでサイトを見た場合は表示されていません。しかし、htmlのソースを見るとちゃんと埋め込まれているので、検索向けなんでしょうね。

固定ページ?

構造化データのエラーとWordPressのテンプレを付きあわせてみると、どうやら固定ページに問題?があるみたいです。問題?と書いたのは、SEOには関係ないから直さなくても良いとかいう記事を見たからです(どのサイトか忘れました)。仮に検索順位には関係ないとしても、エラーが頻発している状況は気持ち悪いので(プログラミングでWarningを放置しているような気分)、なんとかして対処することにしました。

TwentyFifteenでの対処法

このサイトはTwentyFifteenを使ってるので、他のWordPressテーマ使っている人では対処法が違うかもしれません。記事自体に更新日等を表示させる方法も色々調べましたが、ひとまずSearch Console向け(検索向け)に対処することにしました。

参考:ウェブマスターツールで「hentry(マークアップ: microformats.org)」構造化データエラーが出たときの対策方法
http://nelog.jp/hentry-microformats-org

WordPress設定関係では、寝ログさんの記事に大分お世話になっている気がします。

author情報の表示

対処法としてこれでいいのか良く分かりませんでしたが、footer.phpにコピーライトを書いてるので、サイト名を著者名としました。

<span class="vcard author"><span class="fn">著者名</span></span>

しかし、変更してから4日たってもエラーが減ってこないので、本体のテンプレート(content-page.phpなど?)に埋め込まないといけないのかもしれません。もう少し様子をみます。

2015/11/24:追記

やはりfooter.phpでは効果がありませんでした。author情報を埋め込むにはcontent-page.phpでないといけません。
また、私はブログ記事は全てblog/以下に置いていますが、このブログ記事一覧ページにはデフォルトでauthor情報が表示されていません。これはinc/template-tags.phpでauthor表示する部分に

if ( is_singular() || is_multi_author() ) {
....
}

という条件分岐が入っているからだと思います(ここはまだ対処していません)。

updatedの表示

固定ページ用のテンプレ(多分content-page.php)には、日付情報等を表示させる関数

twentyfifteen_entry_meta()

がありません。最初こいつがどこにあるのか分からなかったのですが、どうやら

twentyfifteen/inc/template-tags.php

内に定義されているということを発見。中身を見て時間表示に関係ありそうな部分だけを関数化してfunctions.phpに記載、それをcontent-page.phpから呼び出すという回りくどいことをしました。コピペして、content-page.phpに直貼りしても(もしかしたら)動くかもしれません。コピペしたのは以下の部分です。

$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';

if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
	$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
}

$time_string = sprintf( $time_string,
	esc_attr( get_the_date( 'c' ) ),
	get_the_date(),
	esc_attr( get_the_modified_date( 'c' ) ),
	get_the_modified_date()
);

printf( '<span class="posted-on"><span class="screen-reader-text">%1$s </span><a href="%2$s" rel="bookmark">%3$s</a></span>',
	_x( 'Posted on', 'Used before publish date.', 'twentyfifteen' ),
	esc_url( get_permalink() ),
	$time_string
);

最終的には、新しく用意した「固定ページ用時間表示関数」(functions.phpで定義)をcontent-page.phpに追加しました。

<footer class="entry-footer">
	<?php entry_meta_fixed_page() ?>
	<?php edit_post_link( __( 'Edit', 'twentyfifteen' ), '<span class="edit-link">', '</span>' ); ?>
</footer><!-- .entry-footer -->

構造としてはcontent.phpのfooter部分と全く一緒で、「entry_meta_fixed_page()」が「固定ページ用時間表示関数」です。これでサイト上では「公開日」が表示されて、ソースを確認すると「更新日」も埋め込まれてるのが分かります。「updatedがありません」のエラーは減っているような気がしますが、もう少し様子を見てから判断してみます。

スポンサーリンク
広告1
広告1

シェアする

フォローする