【Shopify】ブログ記事の構造化データマークアップの JSON-LD にメタフィールドで項目を追加


こんにちは。Gaji-Labo 横田です。前回 Shopify のメタフィールド(Metafields)を使って任意の情報を表示させる方法を紹介しました。

Shopifyのメタフィールド機能を使ってみる

今回は Shopify のブログ記事の構造化データマークアップの JSON-LD に、このメタフィールドで項目を追加してみました。

Shopify のブログ記事の構造化データに項目を追加したい

構造化データマークアップとは、 Google 検索でリッチリザルトとして表示されるデータ形式のことです。(詳細は Google 検索セントラル > 構造化データの使用を参照ください)
Debut テーマ使用の場合、Shopify のブログ記事の構造化データは templates/article.liquid にデフォルトで記述されています。

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Article",
  "articleBody": {{ article.content | strip_html | json }},
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": {{ shop.url | append: page.url | json }}
  },
  "headline": {{ article.title | json }},
  {% if article.excerpt != blank %}
    "description": {{ article.excerpt | strip_html | json }},
  {% endif %}
  {% if article.image %}
    {% assign image_size = article.image.width | append: 'x' %}
    "image": [
      {{ article | img_url: image_size | prepend: "https:" | json }}
    ],
  {% endif %}
  "datePublished": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%SZ' | json }},
  "dateCreated": {{ article.created_at | date: '%Y-%m-%dT%H:%M:%SZ' | json }},
  "author": {
    "@type": "Person",
    "name": {{ article.author | json }}
  },
  "publisher": {
    "@type": "Organization",
    {% if page_image %}
      {% assign image_size = page_image.width | append: 'x' %}
      "logo": {
        "@type": "ImageObject",
        "height": {{ page_image.height | json }},
        "url": {{ page_image | img_url: image_size | prepend: "https:" | json }},
        "width": {{ page_image.width | json }}
      },
    {% endif %}
    "name": {{ shop.name | json }}
  }
}
</script>

ここの author プロパティに、 jobTitle description sameAs image プロパティを追加したいです。

メタフィールドの定義を追加する

前回の記事のとおり、設定からメタフィールドの定義を追加します。今回はブログ記事の著者ページも同時に作りたいので、ページフィールドに定義します。
コンテンツタイプは それぞれ、jobTitle : 単一行のテキスト、description : 複数行のテキスト、sameAs : URL(リスト)、image : ファイルを選択。

ページフィールドに定義を追加

定義したメタフィールドを利用する

ページを新規作成・保存すると、定義したメタフィールドセクションが表示されるので、任意のコンテンツを設定します。

ページで各項目を設定

templates/article.liquid に変数を記載する

templates/article.liquid の JSON 部分に「ネームスペースとキー」の定義を出力させます。
sameAs プロパティは任意の項目にしたいので、項目が空でなかった場合のみ表示するよう if 文で条件分岐。

"author": {
    "@type": "Person",
    "jobTitle": {{ page.metafields.custom.author_jobTitle | json }},
    "description": {{ page.metafields.custom.author_description | strip_html | json}},
      {% if page.metafields.custom.author_sameAs != blank %}
        "sameAs": {{ page.metafields.custom.author_sameAs | prepend: "https:" | json }},
      {% endif %}
    "image":{{ page.metafields.custom.author_image | img_url: image_size | prepend: "https:" | json }},
    "name": {{ article.author | json }}
  },

終わりに

Shopify のメタフィールド機能を使って、構造化データマークアップの JSON に任意のプロパティを追加することができました。

追加した構造化データの検証には、リッチリザルトテスト や Google Chrome の拡張機能 JSON-LD Tester が便利です。


投稿者 Yokota Tomoko

運用やアクセシビリティに配慮したHTML/CSSの設計やコンポーネント作成、スタイルガイドの構築、コードレビュー、組み込み、要件の整理、社内進行管理、顧客とのコミュニケーションまで、ジョインしたチームを前に進めるためにあれこれ担当しています。子育てと仕事のバランスを楽しめるよう、日々模索しています。