LoginSignup
3
0

More than 1 year has passed since last update.

【shopify】gidで商品情報を取得する

Posted at

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

処理

article-template.liquid
{% 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>
  1. gidを/で区切った配列にする
  2. 最後の要素=商品IDを取得する
  3. すべての商品が登録されているコレクションから、IDで商品検索をする
  4. 目的の商品オブジェクトゲットだぜ

という流れになります。

この方に大感謝です👇
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

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0