# Storefront API ile metafield ve metaobject okuma

> Bir ürünün metafield’larını okuyun, beden tablosu gibi bir metaobject referansını takip edin ve SSS gibi bir tipteki tüm metaobject’leri listeleyin.

Sayfa: https://lintelagency.com/tr/kaynaklar/graphql/storefront-metafield-ve-metaobject-okuma

## Kısaca

Headless bir mağazada özel verileri okumak için tekil değerlerde product.metafield(namespace, key) seçin; bir metaobject referansını takip etmek için reference içinde Metaobject’e inline fragment kullanın. Bir tipteki tüm kayıtları, örneğin SSS’leri listelemek için metaobjects(type: "faq") sorgulayın. İkisi de yalnızca tanımında storefront erişimi PUBLIC_READ olan verileri döndürür.

## Bilgiler

- **API:** Storefront API
- **İşlemler:** product.metafield, metaobjects
- **Erişim yetkileri:** unauthenticated_read_product_listings, unauthenticated_read_metaobjects
- **API sürümü:** 2026-10
- **Son kontrol:** 2 Kasım 2026

## Nasıl kullanılır

1. Metafield ve metaobject tanımlarının storefront erişiminin PUBLIC_READ olduğundan emin olun.
2. ProductCustomData’yı gönderin; alias’lar (fabric, sizeChart) tek sorguda birkaç metafield okumanızı sağlar.
3. Bir referans için reference { ... on Metaobject { … } } seçin ve alanları key’e göre alın.
4. Bir tipteki kayıtları listelemek için StoreFaq’ı gönderin ve hasNextPage true olduğu sürece after ile sayfalayın.

## Kod

### product-custom-data.graphql

```graphql
query ProductCustomData($handle: String!) {
  product(handle: $handle) {
    title
    fabric: metafield(namespace: "custom", key: "fabric") {
      value
    }
    sizeChart: metafield(namespace: "custom", key: "size_chart") {
      reference {
        ... on Metaobject {
          handle
          title: field(key: "title") {
            value
          }
          rows: field(key: "rows") {
            value
          }
        }
      }
    }
  }
}
```

### product-custom-data.variables.json

```json
{
  "handle": "linen-shirt"
}
```

### product-custom-data.response.json

```json
{
  "data": {
    "product": {
      "title": "Linen shirt",
      "fabric": {
        "value": "Linen"
      },
      "sizeChart": {
        "reference": {
          "handle": "shirts",
          "title": {"value": "Shirts"},
          "rows": {"value": "[{\"size\":\"S\",\"chest\":96},{\"size\":\"M\",\"chest\":102},{\"size\":\"L\",\"chest\":108}]"}
        }
      }
    }
  }
}
```

### metaobjects-by-type.graphql

```graphql
query StoreFaq($type: String!, $first: Int!) {
  metaobjects(type: $type, first: $first) {
    nodes {
      handle
      fields {
        key
        value
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
```

### metaobjects-by-type.variables.json

```json
{
  "type": "faq",
  "first": 20
}
```

### metaobjects-by-type.response.json

```json
{
  "data": {
    "metaobjects": {
      "nodes": [
        {
          "handle": "shipping-time",
          "fields": [
            {"key": "question", "value": "How long does shipping take?"},
            {"key": "answer", "value": "Two to four working days within the EU."}
          ]
        }
      ],
      "pageInfo": {
        "hasNextPage": false,
        "endCursor": "eyJsYXN0X2lkIjoxMTExMTExMTExfQ=="
      }
    }
  }
}
```

## Sınırlar ve özel durumlar

- Storefront erişimi olmayan bir metafield, hiç yokmuş gibi null döner.
- Alias kullanmadan birkaç metafield okumak için metafields(identifiers: [{namespace, key}, …]) kullanın.
- Değerler metindir; json ve liste tiplerini kendiniz ayrıştırın.
- Tek bir kaydı handle ile okumak için metaobject(handle: {type, handle}) kullanın; handle’lar yalnızca bir tip içinde benzersizdir.

## Sorular

### Storefront API ile ürün metafield’ları nasıl alınır?

Üründe metafield(namespace: "custom", key: "anahtariniz") { value } seçin. Metafield tanımının storefront erişimi PUBLIC_READ olmalıdır.

### Hydrogen’da metaobject’ler nasıl sorgulanır?

Tiple birlikte metaobjects sorgusunu kullanın ya da bir ürün metafield’ındaki metaobject referansını takip edin. Hydrogen’ın storefront istemcisi aynı Storefront API sorgularını çalıştırır.

### Metafield’ım Storefront API’de neden null dönüyor?

Genellikle tanımı storefront erişimine izin vermiyordur ya da namespace veya key farklıdır. Tanımda storefront erişimini PUBLIC_READ yapın.

## Shopify belgeleri

- [Storefront API metaobjects query](https://shopify.dev/docs/api/storefront/latest/queries/metaobjects)
- [Storefront API metaobject query](https://shopify.dev/docs/api/storefront/latest/queries/metaobject)

## İlgili içerikler

- [Metaobject tanımı oluşturma ve kayıtları upsert etme](https://lintelagency.com/tr/kaynaklar/graphql/metaobject-tanimi-ve-upsert)
- [Metafield tanımı oluşturma](https://lintelagency.com/tr/kaynaklar/graphql/metafield-tanimi-olusturma)
- [Hydrogen mı Liquid mi: headless ne zaman kendini amorti eder?](https://lintelagency.com/tr/blog/shopify-hydrogen-mi-liquid-mi)

Lisans: MIT. Kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
