空白のメタフィールドで非表示にしたいが、特定のメタフィールドだと0が表示されてしまいます。

Topic summary

商品ページでメタフィールドが空白の場合に非表示にしたいが、sizeという名前のメタフィールドだけ「0」が表示されてしまう問題が報告されました。

原因:

  • product.metafields.custom.sizeという記述では、Liquidがcustomオブジェクトのサイズ(要素数)を返してしまうため、正しく判定できていない
  • sizeはLiquidのフィルターとして予約されているため、ドット記法で使用すると意図しない動作になる

解決方法:
小笠原氏から、.valueを使って明示的に値を取得する方法が提案されました:

{% if product.metafields.custom.size.value != blank -%}
Size: {{ product.metafields.custom.size.value }}
{% endif %}

結果:
質問者は複数のテーマで確認し、この方法で問題が解決したことを報告。意図通りの表示が実現されました。

Summarized with AI on November 23. AI used: claude-sonnet-4-5-20250929.

テーマ:Dawn7.0(Dawn以外でも起こります)
商品ページに下記のコードをいれて、

sizeメタフィールドを表示(空白なら非表示)を行いたいと思ってます。

他のメタフィールドでは可能なのですが、

sizeだけは非表示にならず0が表示されてしまいます。

size1や、size2などならば、非表示になります。

{% if product.metafields.custom.size != blank -%}
Size:
{{ product.metafields.custom.size }}
{% endif %}

いろいろ探したところ、下記と同じような現象だと思います。
https://community.shopify.com/post/1846747

Shopify のバグでしょうか?
いまのところ、対処法として、size以外のメタフィールドに書き換えることしかできないのかを確認したいです。

メタフィールドを使用する際に注意する文字列などご存知の方がいらっしゃいましたら、

ご教示願います。

YUKI-Jさん、はじめまして。

Tsunの小笠原と申します。

if product.metafields.custom.size != blank

こちらの書き方ですと、product.metafields.customというオブジェクトのサイズを返すためうまく判定できていないのかなと思います。

参考: https://shopify.dev/api/liquid/filters/size#size-dot-notation

{% if product.metafields.custom.size.value != blank -%}
Size:
{{ product.metafields.custom.size.value }}
{% endif %}

のようにvalueを取得するとsizeという名称のままでもうまく判定できると思います。

参考: https://shopify.dev/api/liquid/objects/metafield#metafield-access-metafields

小笠原様
早速のご返信ありがとうございました!
お返事が遅くなり申し訳ありません。

valueをつけて、複数のテーマを確認したところ、全て思い通りに表示されました。
とても助かりました。