Shopify Function 店铺 metafield 读不到
现象#
规则 JSON 写在店铺级 metafield 上,函数 input 里的 shop.metafield 一直是 null;把同一条 JSON 写到某个商品上反而能读到。
原因#
- 店铺级 metafield 要从
shop { metafield(...) }取,写成 cart 层级永远为空 - 写入时 ownerId 用了店铺数字 ID 而不是
gid://shopify/Shop/...,值写到别处 - 配置读不到时函数按无规则处理直接放行,表现和功能没上线完全一样
- 定义没建或 key 大小写不一致时查询返回 null,不会提示字段不存在
处理步骤#
- 在查询里用
shop.metafield而不是 cart 层级取值 - 写入用
metafieldsSet并显式指定 Shop 的 GID 与 type 为 json - 解析前判空:
JSON.parse(input.shop?.metafield?.value ?? "{}") - 配置为空时用
throw或写一条 error,不要静默通过 - 在 后台 设置 → 自定义数据 → 店铺 里确认该 metafield 有值
验收标准#
日志里 input.shop.metafield.value 与后台保存的 JSON 一致;删掉该 metafield 后结账出现明确报错而不是照常放行。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。