gidで商品情報取るのに苦戦しまくったので記録しておきます。
メタフィールドで取ってこれる商品の情報がgidだけってマジ?
shopifyにはメタフィールドという、WPやMTでいうところのカスタムフィールドがあります。
ページやブログ記事、商品などに任意の項目を追加することができるので便利です。
メタフィールド · Shopify ヘルプセンター
【Shopify】メタフィールドについて - Qiita
今回私はブログ記事に関連商品という項目が作りたかったので、ブログ記事に対して商品を1つ紐付けられるメタフィールドを作成しました。
メタフィールドで設定した値は、liquid内で article.metafields.custom.hoge
という感じで使うことができます。
メタフィールドで商品を選択すると、取得できる情報はgidというものになります。
gid://shopify/Product/1
みたいな感じです。
全商品から特定の商品を検索したい場合は all_products["ハンドル名"]
で取得できます。
だがハンドル名てよぉ・・こちとらgidしかないねん・・
となって現在に至ります。
gidをもにゃもにゃして商品情報を取ってくる
前提
- ブログ記事に_productという名前でメタフィールドを作成しました
👉article.metafields.custom._product
- 全商品が登録されているコレクションがあります(ハンドルは
all
)
処理
{% assign split_id = article.metafields.custom._product | split: "/" %}
{% assign the_id = split_id | last %}
{% assign product_id = the_id | times: 1 %}
{% assign products_obj = collections.all.products | where: 'id', product_id %}
{% assign related_product = products_obj[0] %}
<h2>関連商品</h2>
<p>商品タイトル: {{ related_product.title }}
<p>価格: {{ related_product.price | money }}</p>
<p>商品画像:
{% for image in related_product.images limit:1 %}
<img src="{{ image.src | product_img_url: 'medium' }}">
{% endfor %}
</p>
- gidを
/
で区切った配列にする - 最後の要素=商品IDを取得する
- すべての商品が登録されているコレクションから、IDで商品検索をする
- 目的の商品オブジェクトゲットだぜ
という流れになります。
この方に大感謝です👇
How to get product Information by Product ID ? - Shopify Community
自分が調べてみた限りでは、handleで指定するやり方ばかり出てきまして
ID~~~~~!!!!と数時間暴れてこうなりました。
一撃で取れる方法あったら、めっちゃ悔しいんですけど教えてください。
乙!!
参考
メタフィールド · Shopify ヘルプセンター
【Shopify】メタフィールドについて - Qiita
How to get product Information by Product ID ? - Shopify Community
iquid objects: product