
さて、昨日wordpressでのAMP対応の記事をアップしたんですが、早速1つ気になるところが出てきました。
<参考:まだ間に合う!Wordpressサイトを”サクッ”とAMP(Accelerated Mobile Pages)対応させるためにやったことまとめ | ultimate-ez.com>
出力される構造化データを「BlogPosting」じゃなく「NewsArticle」にしたい!
Googleの検索結果ページに実装される予定の「AMPカルーセル」で記事を表示するために、AMPには専用の構造化データが用意されています。
従来からある記事用のリッチスニペットに比べると必須・推奨のプロパティが大きく増えています。
※Google Developersで公開されている構造化データの仕様はこちら→Enabling Rich Snippets for Articles | Structured Data | Google Developers
WordPressのプラグイン「AMP」を使うと、自動的に構造化データも設定してくれるんですが、出力される構造化データが「schema.org/BlogPosting」に固定されてしまうんです。
でも、ニュース性のある記事については「schema.org/NewsArticle」の形式で出力したい!
というのも、今のところGoogleのモバイル検索ではニュース系コンテンツがAMPの対象と言われていて、そう言われると、なんとなく「BlogPosting」よりも「NewsArticle」の方が表示される確率が高そうな気がしてきます。
もちろん現時点では何の根拠もないただの予想です。実際にどうなのかは運用してみて確認してみようと思います。
ということで、AMPを適用したサイトの記事の内、”ニュース”と呼んで差し支えのないものについては、「NewsArticle」として出力してみることにします。
WordPressのプラグイン「AMP」で、構造化データを変更するには?
昨日はプラグインのファイルをガシガシ編集していましたが、少しづつプラグインの仕様がつかめてきたので、今回はフィルターフックを使って構造化データを書き換えてみようと思います。
フックをかけるフィルターはamp_post_template_metadata
。
使用しているテンプレートファイルのfunctions.phpに、以下の記述を行います。
function my_amp_template_metadata( $metadata ) { $metadata['@type'] = 'NewsArticle'; return $metadata; } add_filter( 'amp_post_template_metadata', 'my_amp_template_metadata' );
これで、デフォルトでは「BlogPosting」として出力されていた構造化データが、「NewsArticle」として出力されるようになります。
さらに、今回は”ニュース記事”と呼べる記事だけを「NewsArticle」にしておきたい!もちろん、全ての記事をNewsArticleにしておいた方が良い可能性もありますが、今回はあくまで実験的導入ということで記事の一部のみNewsArticleにしてみます。
対象サイト「Apple Watch Journal」には、「ニュース」というカテゴリがあるので、そのカテゴリだけを「NewsArtcile」、それ以外を「BlogPosting」として出力するように、先ほどの記述を変更してみます。
function my_amp_template_metadata( $metadata ) { if ( in_category(array('news')) ){ $metadata['@type'] = 'NewsArticle'; } else { $metadata['@type'] = 'BlogPosting'; } return $metadata; } add_filter( 'amp_post_template_metadata', 'my_amp_template_metadata' );
適用する場合はテンプレートタグ in_category()
のパラメータとしてカテゴリのスラッグかIDを使って、対象のカテゴリのみNewsArticleになるよう修正してみてください。
実際に出力されるHTMLを見てみると…
無事にNewsArticleとして出力されました。
最後にChromeでのデバッグ(URLの末尾に#development=1を追加してコンソールを確認)するのもお忘れなく!
というわけで、wordpressのプラグイン「AMP」で構造化データ(schema.org)を変更する方法でした。
まあ、NewsArticleとBlogPostingでSEO的に違いがあるのかはわかりませんが、気になった人はご参考まで!
コメントを残す