WordPressのテーマごとには、あらかじめ制作者がコーディングしたMicrodataの記述が見られます。
ThemesによってitemtypeのBlog,Article,blogpost,articleBodyが入り交ざっており、構造化ツールを使うとエラーがたくさん出てどこを修正していいのかさっぱりわかりません。
そのitemtypeは本当に必要なの?
BlogとArticleは両方入れても問題はないですが、BlogとArticleの両方にauthorなどの必須プロパティをいれなくてはなりません。
それぞれにコピペすればいいですが、厄介なのがhtmlタグにitemtypeが入力されている場合です。
例えば<html itemtype=”http://schema.org/WebSite”>でしたらエラーの対処はしやすいようですが、データタイプがArticleなどコーディングされていた場合、エラーの対処が難しいです。
headタグとbodyタグの外にタグを入れることができませんね。
htmlタグの入れ子はheadタグとbodyタグのみですから。
metaタグを使ってMicrodataを設定できますが、headタグ内のmetaタグはdescriptionなど限られています。
body内に記述すればいいと思われますが、入れ子が深くなり反応しません。文の構造もおかしくなりそうです。
htmlタグのphpをリセットしよう
htmlのデータタイプArticleが邪魔です。
エラーを解決できず、そもそもデータが重複して整理できていません。
まず最初の作業は、自分のサイトから個別のページを右クリックしソース表示しました。
<html
lang=”ja”
itemscope
itemtype=”http://schema.org/Article”>
一行目にArticleがあり、SerachConsoleを見ると、こいつがずっとエラー表示していました。
しかしheader.phpを見ると
<html <?php language_attributes(); ?>>
しかありません。itemtypeは?
「language_attributes();」は<html>タグの言語属性を表示する関数のことで「lang=”ja”」だから違うだろう。
と、思っていたのですが、試しに「language_attributes();」を消すと、Microdataも消えていました。
言語属性もlang=”ja”と直接入れなおせばよく、「language_attributes();」でわざわざサーバーを経由しなくてもいいだろうという理由で削除しました。
ひとまずhtmlタグにはMicrodataを入れずにbodyタグからスニペットしていこうと思います。
ブログですが、記事としても扱えるのでArticleでもいいですね。
私はBlogのままでcotent部分に「itemprop=”mainEntity”」を入れておきました。