← inaro.devShopify学習ツール
12-03

Liquidでメタフィールドを出力する

型ごとに正しい方法でメタフィールドをLiquidに出力し、未設定時の表示を制御できる

最終確認: 2026-09

解説

受託の現場でなぜ必要か: この回では、型ごとに正しい書き方でメタフィールドをLiquidに出力し、値が未設定のときの表示を制御できるようになります。
受託では、運用者が値を空にしたときに見出しだけ残る定番バグを、ラッパー要素ごとifで囲む癖で防ぎます。

基本形は.valueで値を取り出す

{{ product.metafields.custom.material.value }}が基本の形です。
`.value`で値を取り出します(公式の例もすべて.valueです。旧型のinteger / json_string / stringだけは値が直接返ります)。
未設定のときはnil(値が無い状態)なので、{% if product.metafields.custom.material != blank %}で囲みます。
空チェックは.valueではなくメタフィールド自体に対して行い、見出しとラッパー要素ごと囲みます。

metafield_tagmetafield_textの使い分け

{{ product.metafields.custom.care | metafield_tag }}は、型に応じたHTMLを返します。
リッチテキストなら<div class="metafield-rich_text_field">、urlなら<a class="metafield-url">、画像なら<img class="metafield-file_reference">です。
HTMLではなくプレーンテキストが欲しいときは、metafield_textを使います。

リストと参照の展開

リスト型は{% for item in product.metafields.custom.related.value %}のように回します。
参照リストなら、itemに参照先のproductオブジェクトがそのまま入ります。
file_referenceは、画像なら.value | image_url、PDFなら.value.urlで取り出します。

発展:単位付きと金額・JSON

weightなどの単位付きの型は、.value.value.value.unitに分かれます。
money型の.valueはmoneyオブジェクトなので、money_with_currencyなどのmoneyフィルタで整形します。
通貨コードは.value.currency.iso_codeから取ります(amount / currency_codeはGraphQL側の名前です)。
json型は.valueがパース済みで、キーでアクセスできます。

ステップ1 / 2

ShopifyはShopify Inc.の商標です。本サイトは個人が制作した非公式の学習教材であり、同社の承認・提携・後援を受けていません。記載内容は2026-09時点のものです。料金・上限値・管理画面のラベルは変わるため、作業の前に公式ドキュメントで確認してください。