通过 GraphQL API 将产品同步到 Shopify 时,如何检索类别元字段值的 GID?

问题描述 投票:0回答:1

我正在开发一个产品同步系统,通过 Shopify GraphQL API 将产品从我的后端系统上传到 Shopify。我可以使用标准元字段创建产品,但我也想使用类别元字段来更有效地组织它们。

这就是我被困住的地方:

我已将 Shopify 的分类类别 ID 映射到我的系统,因此我可以轻松地将产品分配到类别。 但是,Shopify 要求我传递类别元字段中每个值的 GID(全局 ID)(例如,产品的特定颜色或尺寸)。 虽然可以从 Shopify 的 UI 手动检索每个值的 GID,然后在 API 中使用它,但这不可扩展 - 我正在处理多个类别的大约 4000 个产品。理想情况下,我需要一种方法来以编程方式获取类别元字段中可用值的 GID。

这是我用来创建产品的 GraphQL 请求示例:

  productCreate(input: $input, media: $media) {
    product {
      id
      title
      metafields(first: 10) {
        edges {
          node {
            
            namespace
            key
            value
          }
        }
      }
      media(first: 10) {
        nodes {
          alt
          mediaContentType
          preview {
            status
          }
        }
      }
    }
    userErrors {
      field
      message
    }
  }
}

这是一个输入示例

{
  "input": {
    "metafields": [
      {
         "namespace": "shopify",
         "key": "color-pattern",
          "value": "[\"gid://shopify/Metaobject/105144877321\"]"
      },
      {
         "namespace": "shopify",
         "key": "bulb-size",
          "value": "[\"gid://shopify/TaxonomyValue/8468\"]"
      
      }
    ],
    "title": "Helmet Nova 6",
    "category": "gid://shopify/TaxonomyCategory/hg-13-5-5"
  },
  "media": [
    {
      "originalSource": "https://cdn.shopify.com/shopifycloud/brochure/assets/sell/image/image-@artdirection-large-1ba8d5de56c361cec6bc487b747c8774b9ec8203f392a99f53c028df8d0fb3fc.png",
      "alt": "Gray helmet for bikers",
      "mediaContentType": "IMAGE"
    },
    {
      "originalSource": "https://www.youtube.com/watch?v=4L8VbGRibj8&list=PLlMkWQ65HlcEoPyG9QayqEaAu0ftj0MMz",
      "alt": "Testing helmet resistance against impacts",
      "mediaContentType": "EXTERNAL_VIDEO"
    }
  ]
}

在此示例中:

颜色模式字段之所以有效,是因为我在 Shopify UI 中手动创建并映射了元对象,然后检索了 GID。 然而,为所有产品和类别复制此过程将非常耗时。 问题: 有没有办法以编程方式检索类别元字段中可用值的 GID,或者是否有推荐的方法来处理这种批量元字段映射?

任何帮助或指导将不胜感激!谢谢你。

graphql shopify shopify-app shopify-api shopify-api-node
1个回答
0
投票

尝试使用此突变来获取类别数据:

{
  taxonomyNode(id: "gid://shopify/TaxonomyNode/TAXONOMY_ID") {
    ... on TaxonomyLeaf {
      id
      name
      metafieldDefinitions(first: 10) {
        edges {
          node {
            id
            name
            values {
              edges {
                node {
                  id
                  name
                }
              }
            }
          }
        }
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.