Ürünleri combined listing altında birleştirme

Ayrı renk ürünlerini tek bir ilan olarak gösterin: bir parent ürün oluşturun, ardından combinedListingUpdate ile child ürünleri ve seçenek değerlerini bağlayın.

API
Admin GraphQL API
İşlemler
productCreate, combinedListingUpdate
Erişim yetkisi
write_products
Plan
Shopify Plus
API sürümü
2026-10
Son kontrol

Kısaca

Bir combined listing kurmak için productCreate ile combinedListingRole PARENT olan bir parent ürün oluşturun. Ardından combinedListingUpdate’i parent’ın ID’si, göstereceği seçenek ve değerler (optionsAndValues) ve her child ürünün temsil ettiği parent seçenek değeriyle (productsAdded) çağırın. Combined listings yalnızca Shopify Plus planındaki mağazalarda kullanılabilir.

Nasıl kullanılır

  1. Önce her renk için bir child ürün oluşturun; her birinin kendi görselleri, handle’ı ve varyantları olsun.
  2. CreateListingParent’ı combinedListingRole PARENT ile gönderin. Parent’ın stoğu yoktur ve tek başına satın alınamaz.
  3. AddColorsToListing’i parent ID’si, parent seçeneği (değerleriyle Color) ve her biri bir değere eşlenmiş child ürünlerle gönderin.
  4. Sonradan bir child’ı yeniden eşlemek için productsEdited, çıkarmak için productsRemovedIds, parent seçeneklerini değiştirmek için optionsAndValues kullanın.

Kod

product-create-parent.graphql
mutation CreateListingParent($product: ProductCreateInput!) {
  productCreate(product: $product) {
    product {
      id
      combinedListingRole
    }
    userErrors {
      field
      message
    }
  }
}
product-create-parent.variables.json
{
  "product": {
    "title": "Linen shirt",
    "handle": "linen-shirt-all-colors",
    "status": "ACTIVE",
    "combinedListingRole": "PARENT"
  }
}
product-create-parent.response.json
{
  "data": {
    "productCreate": {
      "product": {
        "id": "gid://shopify/Product/1234567890",
        "combinedListingRole": "PARENT"
      },
      "userErrors": []
    }
  }
}
combined-listing-update.graphql
mutation AddColorsToListing(
  $parentProductId: ID!
  $productsAdded: [ChildProductRelationInput!]
  $optionsAndValues: [OptionAndValueInput!]
) {
  combinedListingUpdate(
    parentProductId: $parentProductId
    productsAdded: $productsAdded
    optionsAndValues: $optionsAndValues
  ) {
    product {
      id
      combinedListingRole
      combinedListing {
        combinedListingChildren(first: 10) {
          nodes {
            product {
              id
              title
            }
            parentVariant {
              id
              selectedOptions {
                name
                value
              }
            }
          }
        }
      }
    }
    userErrors {
      code
      field
      message
    }
  }
}
combined-listing-update.variables.json
{
  "parentProductId": "gid://shopify/Product/1234567890",
  "optionsAndValues": [
    {"name": "Color", "values": ["Sand", "Navy"]}
  ],
  "productsAdded": [
    {
      "childProductId": "gid://shopify/Product/1111111111",
      "selectedParentOptionValues": [{"name": "Color", "value": "Sand"}]
    },
    {
      "childProductId": "gid://shopify/Product/1111111112",
      "selectedParentOptionValues": [{"name": "Color", "value": "Navy"}]
    }
  ]
}
combined-listing-update.response.json
{
  "data": {
    "combinedListingUpdate": {
      "product": {
        "id": "gid://shopify/Product/1234567890",
        "combinedListingRole": "PARENT",
        "combinedListing": {
          "combinedListingChildren": {
            "nodes": [
              {
                "product": {"id": "gid://shopify/Product/1111111111", "title": "Linen shirt - Sand"},
                "parentVariant": {"id": "gid://shopify/ProductVariant/2222222221", "selectedOptions": [{"name": "Color", "value": "Sand"}]}
              },
              {
                "product": {"id": "gid://shopify/Product/1111111112", "title": "Linen shirt - Navy"},
                "parentVariant": {"id": "gid://shopify/ProductVariant/2222222222", "selectedOptions": [{"name": "Color", "value": "Navy"}]}
              }
            ]
          }
        }
      },
      "userErrors": []
    }
  }
}

Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.

Sınırlar ve özel durumlar

  • Bir parent’ın en fazla 60 child ürünü ve bunlara yayılmış en fazla 2000 varyantı olabilir.
  • Satışlar child ürünlerde izlenir; checkout ve siparişlerde parent değil child görünür.
  • Bir combined listing bundle olamaz ve başka bir combined listing’in parçası olamaz.
  • Mağazada tek ürün olarak görünmesi için temanın combined listings’i desteklemesi gerekir.

Sık sorulan sorular

Shopify combined listings nedir?
Genellikle her renk için bir tane olmak üzere birkaç ürünün, mağazada ortak bir seçenek seçicisiyle tek ürün olarak gösterilmesidir. Her child kendi URL’sini, görsellerini ve stoğunu korur.
Combined listings için Shopify Plus gerekir mi?
Evet. Combined listings’i yalnızca Shopify Plus planındaki mağazalar kullanabilir.
Parent ürünü productSet ile oluşturabilir miyim?
Shopify’ın referansı parent’ı productCreate ve combinedListingRole PARENT ile oluşturur; burada da bu yol gösteriliyor.
  • Gösterilen tarihte, 2026-10 sürümünün Admin veya Storefront API şemasıyla doğrulandı. İstek adresinizdeki sürümü kontrol edin.
  • Örneklerdeki ID’ler ve mağaza adresleri yer tutucudur. Kendi değerlerinizle değiştirin.
  • Admin API çağrıları uygulamanızdan bir erişim anahtarı (access token) ister. Admin API anahtarını asla vitrine ya da temaya koymayın.
  • MIT lisansı. Kodu kendi mağazanızda da müşteri işlerinizde de kullanabilirsiniz.

Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: API entegrasyonları.

Geliştirmek istediğiniz bir şey mi var? Gelin, birlikte konuşalım.

Aynı anda sınırlı sayıda proje alıyoruz.

Gencer KarakayaShopify mühendisi

Proje özetinizi bir mühendis okur; size e-postayla yanıt veririz.