私はMicrodataを実験してきましたが、ブログで試してみようと思いました。私が使用していたテンプレートにはすでにマークアップが追加されていました。それは素晴らしくなかったので、できることを修正しました。
運を試してみるために、最新の投稿にマークアップを追加しましたが、Googleの構造化データテストツール(SDTT)はitemprop='image'
属性に満足しておらず、その理由はわかりません。
結果ページ 。
このようにデータを構造化したのは、その間のすべてのコードを無視した私の理解です:
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<div itemprop='articleBody'>
<a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
<a href="2.png" itemprop="url"><img itemprop="image sharedContent" src="2.png" /></a>
<a href="3.png" itemprop="url"><img itemprop="image sharedContent" src="3.png" /></a>
</div>
</div>
そして、これは私には正しいようです。 BlogPosting
は、 https://schema.org/BlogPosting に従ってプロパティarticleBody
およびimage
を持つことができますが、SDTTに従って:
属性itemtypeの値が無効です。
実際、上記のサンプルコードでSDTTを試したところ、検証に失敗しました。
だから私は明らかに何かが欠けています。何が間違っていますか?
schema.org/BlogPosting imageはImageObjectとURLを許可しますが、 GoogleはImageObjectのみを許可します 、したがってエラーが発生します。目的のマークアップは次のとおりです。
<!-- my code -->
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<img src="image.jpg" itemprop="url">
</div>
別の矛盾は schema.org/ImageObjectcontentUrl
を推奨しますが、Googleはurl
を推奨するため、上記の使用法です。
コメントのコード に応答して、構造はまだ正しくありません。行ごとに説明します。
<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
軽微な点ですが、XHTMLを使用する場合を除き、itemscope='itemscope'
は間違っています。 itemscope
を使用します(後で行います)。
<!-- your code -->
<div itemprop='articleBody'>
<div itemscope itemtype="http://schema.org/ImageObject"/>
ImageObjectはarticleBodyプロパティの子ですが、この方法で関連付けていません。このように、関連付けられたプロパティと関連付けられていないImageObjectを持つarticleBodyがあります。あなたが使用する必要があります
<!-- my code -->
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
また、この要素には子と終了/>
があるため、XHTMLを試行している場合でも、</div>
は正しくありません。上記のスニペットに含めたように、>
を使用してください。
<!-- your code -->
<a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
ここでsharedContentは何をしていますか? sharedContentはCreativeWorkを予期します SocialMediaPostingのプロパティとして使用する場合— ImageObjectのプロパティとしてではなく、imgでも使用しないでください。
次のようにsharedContentプロパティを配置する その他のコードスニペット も間違っています。
<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<div itemprop='articleBody'>
<div itemprop='sharedContent'>
<div itemscope itemtype="http://schema.org/ImageObject"/>
…
SharedContentは現在適切な場所にありますが、CreativeWorkである必要があります。構造化データテストツールで示されているように、ImageObjectsは引き続きBlogPostingに関連付けられていません。
以下は正しいコードです。
<!-- my code -->
<div itemscope itemtype="http://schema.org/BlogPosting">
<div itemprop="articleBody">
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<a href="1.png" itemprop="url"><img itemprop="image" src="1.png"></a>
</div>
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<a href="2.png" itemprop="url"><img itemprop="image" src="2.png"></a>
</div>
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<a href="3.png" itemprop="url"><img itemprop="image" src="3.png"></a>
</div>
</div>
</div>