ShopifyでFAQを商品ページへ自動表示する方法【カスタムセクション編】

前回の記事では、Shopifyのメタオブジェクトを使ってFAQを一問ずつ登録し、商品管理画面から各商品に必要なFAQを紐づける方法を紹介しました。


ただし、テーマ標準の「折りたたみ可能なコンテンツ」を使う方法では、質問と回答を一行ずつ設定する必要があり、

FAQを追加・変更するたびにテーマカスタマイズ画面を開くのは手間がかかります。

今回はカスタムセクションを作成し、商品管理画面で選択したFAQだけを商品ページへ自動表示する方法を紹介します。

この記事でわかること

  • 商品メタフィールドに登録されたFAQをLiquidで取得する方法
  • 複数のFAQを繰り返し表示するカスタムセクションの作り方
  • FAQをアコーディオン形式で表示する方法
  • 商品ごとに表示内容が自動で切り替わる仕組み
目次

そもそもここで何をやろうとしているのか?ゴールをもう一度明確にしておきます。

  • 現在表示している商品のメタフィールドを読み込む
  • 商品に紐づけられたFAQだけを取得する
  • 登録された件数分、質問と回答を自動で繰り返し表示する
  • FAQが登録されていない商品ではセクションを表示しない

2. 作業前にテーマを複製する

使用中のテーマを確認、バックアップを行う

今回はテーマ:Dawnを前提に説明します。

Shopify管理画面「オンラインストア」より、公開中テーマファイル名”Dawn_20260830”(仮名)を複製し、バックアップを取っておきます。

公開中テーマの「…」メニューから「複製」を選択します。

複製が完了すると、下セクションの「下書きテーマ」に”Dawn_20260830のコピー”が作成されます。

テーマのバックアップを作成して、問題が発生した時コード編集前の状態にいつでも戻せるようにしておきます。

3. FAQ用のカスタムセクションを作成する

テーマのコード編集画面を開く

公開中テーマの「…」メニューから「コードを編集」を選択し、コード編集画面に切り替えます。

新規セクションファイルを作成する

画面左の”section”フォルダを開き、”New File”を選択して新しいセクションファイルを作成します。

例として名前は”product-faq.liquid”としておきます。

ファイル名は半角英数字とハイフンを使用し、また、後から内容がわかる名前にしておくことをおすすめします。

4. 商品に登録されたFAQを取得する

前回の記事「ShopifyでFAQを一問ずつ登録する方法」にて紹介した「4. 商品とFAQをつなぐメタフィールドを作る」までの手順が完了していることを前提とします。

商品メタフィールドを変数へ入れる

”product-faq.liquid”へ次のコードをそのまま貼り付けます。

{% assign product_faqs = product.metafields.custom.product_faqs.value %}

{% if product_faqs != blank %}
<section class=”product-faq”>
<h2>{{ section.settings.heading }}</h2>

{% for faq in product_faqs %}
<div class=”product-faq__item”>
<h3 class=”product-faq__question”>
{{ faq.question.value }}
</h3>

<div class=”product-faq__answer”>
{{ faq.answer | metafield_tag }}
</div>
</div>
{% endfor %}
</section>
{% endif %}

{% schema %}
{
“name”: “商品FAQ”,
“settings”: [
{
“type”: “text”,
“id”: “heading”,
“label”: “見出し”,
“default”: “よくある質問”
}
],
“presets”: [
{
“name”: “商品FAQ”
}
]
}
{% endschema %}

上記コードで行っていること

1. 商品メタフィールドを変数へ入れる

{% assign product_faqs = product.metafields.custom.product_faqs.value %}

長いメタフィールド名を、”product_faqs”という短い名前の変数へ入れています。

それぞれの意味は次のとおりです。

  • “product”:現在表示している商品
  • “metafields”:商品のメタフィールド
  • “custom”:メタフィールドのネームスペース
  • “product_faqs”:メタフィールドのキー
  • “.value”:登録されたメタオブジェクトを取得

前回作成したネームスペースとキー、”custom.product_faqs“をここで使用します。

2.FAQがある場合だけ表示する

{% if product_faqs != blank %}

上記を説明すると、”product_faqs”が空ではない場合だけ、その内側のHTMLを表示します。

内側のHTMLとは、最後の次のコードまでのHTMLのことです。

{% endif %}

こうして、FAQが選択されていない商品では、<section></section>で囲まれたHTMLの箇所全体が出力されません。

「よくある質問」という見出しだけが残ったり、不要な余白が発生したりすることを防ぎます。

3.登録されたFAQを一件ずつ取り出す

{% for faq in product_faqs %}

“product_faqs”に含まれるFAQを、先頭から一件ずつ”faq”へ入れます。

ループの終了位置は次のコードです。

{% endfor %}

商品に5件のFAQが登録されていれば、この範囲が5回繰り返されます。

4.質問を表示する

{{ faq.question.value }}

現在処理しているFAQから、”question”フィールドの値を取得します。

5.回答を表示する

{{ faq.answer | metafield_tag }}

前回、回答は「リッチテキスト」で作成しています。そのため、”.value”を直接表示するのではなく、”metafield_tag”を使ってHTMLへ変換します。

5. 商品テンプレートに追加する

コードを保存しただけでは、商品ページには表示されません。続いてセクションを商品テンプレートへ追加します。

Shopify管理画面へ戻り、オンライン➞「テーマを編集する」をクリックし、テーマの編集画面に映ります。

そこで画面上部のページ選択欄「商品」をクリックします。

対象商品が使っている商品テンプレートを選択します。

ここではFAQを入れる対象商品は「エッセンシャル コットンクルーネックTシャツ ホワイト」なので、

その商品ページで使用されているテーマテンプレートの「デフォルトの商品」を選択します。

続いて、左側の「テンプレート」内にある「セクションを追加」をクリックし、一覧から「商品FAQ」を選択し、追加します。

このセクションは先程、”商品メタフィールドを変数へ入れる”のliquidファイル内で記述したスキーマです。

下図のように、商品「エッセンシャル コットンクルーネックTシャツ ホワイト」の情報登録画面 ➞ 商品のメタフィールド ➞ 商品FAQで表示させたい設問だけ、チェックしておきます。

テーマテンプレートの「デフォルトの商品」では、先ほど追加した「商品FAQ」セクションにチェックした設問が3問とも表示されていることが確認できました。

「商品FAQ」セクションが表示されていることが確認できたら「保存」をクリックしておきます。

このように、商品ごとに異なるFAQを表示させたい場合はそれぞれの商品情報管理画面でコントロールすることができます。

6.まとめ

こうして4回にわたり商品メタフィールドを使って、FAQを商品ページで表示させる手順を紹介しました。

私は慣れるまでは商品メタフィールドという概念を理解するのが難しかったです。

しかし、一度理解してしまうと、様々な使い方ができます。

今後も、商品メタフィールドを使って、商品ページにおいて紹介すべき共通項目を追加し、よりユーザーにもAIにも理解しやすい商品ページの作り方を紹介していきます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

・Lunariq Studio (ルナリックスタジオ)代表
・フリーランスShopify ECディレクター

目次