Shopify Functions

Shopify Function 店铺 metafield 读不到

现象#

规则 JSON 写在店铺级 metafield 上,函数 input 里的 shop.metafield 一直是 null;把同一条 JSON 写到某个商品上反而能读到。

原因#

  • 店铺级 metafield 要从 shop { metafield(...) } 取,写成 cart 层级永远为空
  • 写入时 ownerId 用了店铺数字 ID 而不是 gid://shopify/Shop/...,值写到别处
  • 配置读不到时函数按无规则处理直接放行,表现和功能没上线完全一样
  • 定义没建或 key 大小写不一致时查询返回 null,不会提示字段不存在

处理步骤#

  1. 在查询里用 shop.metafield 而不是 cart 层级取值
  2. 写入用 metafieldsSet 并显式指定 Shop 的 GID 与 type 为 json
  3. 解析前判空:JSON.parse(input.shop?.metafield?.value ?? "{}")
  4. 配置为空时用 throw 或写一条 error,不要静默通过
  5. 在 后台 设置 → 自定义数据 → 店铺 里确认该 metafield 有值

验收标准#

日志里 input.shop.metafield.value 与后台保存的 JSON 一致;删掉该 metafield 后结账出现明确报错而不是照常放行。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。