Не удается получить метаполя продуктов с помощью StoreFront GraphQL API

Я использую API витрины для своего магазина Shopify. И мне нужно получить метаполя продукта для моего продукта. Я уже добавил метаполя с помощью стороннего приложения (Metafields Guru).

Мне нужно получить все эти метаполя для продукта, и я следил за этой статьей.https://shopify.dev/tutorials/retrieve-metafields-with-storefront-api

{
  productByHandle(handle: "xxx-handle") {
  id
  title
  handle
  productType
  metafields(first: 5) {
    edges {
      node {
        key
        value
      }
    }
  }
}

}

Но я получаю пустой массив для метаполей. Не уверен, что мне здесь не хватает. Любая помощь будет оценена

2 ответа

Решение

Здесь есть пара проблем.

  1. когда вы создавали свои метаполя, вам нужно было назначить их пространству имен. Когда вы пытаетесь получить их с помощью Storefront API, вы должны предоставить это пространство имен, а вам это не удалось.
  2. evem, если вы создали метаполя в админке с помощью какого-либо приложения, вы не увидите их с помощью Storefront API, если не включите их с помощью специального флага.

Так что это, вероятно, тоже пропущенный шаг. Прочтите об этом и обратите внимание на MetafieldStorefrontVisibility. Вы устанавливаете видимое пространство имен и ключ. Это означает, что вы, вероятно, не будете создавать метаполя волей-неволей без тщательного рассмотрения включения или отключения каждого из них для доступа к Storefront API.

Я бы немного расширил ответ Дэвида, так как я еще не могу добавлять комментарии к другим ответам.

Действительно, вы должны сделать метаполя явно видимыми для Storefront API, запустив мутацию MetafieldStorefrontVisibility. Вот несколько полезных ссылок:

Кроме того, я нашел хорошее приложение Accentuate Custom Fields, которое предоставляет параметры пользовательского интерфейса для отображения метаполей в Storefront API при настройке метаполей:

Другие вопросы по тегам