[AMP]wordpressのプラグイン「AMP」で構造化データ(schema.org)を変更する方法

AMP

さて、昨日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的に違いがあるのかはわかりませんが、気になった人はご参考まで!

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です