2026-07版本在GraphQL Admin API中用多源模型替换了集合的单个ruleSet。每个集合现在拥有一个或多个定义类型化包含和排除条件以及手动选择的CollectionSource对象。Shopify Functions也在ProductVariant类型上获得了变体级别的集合成员资格字段。
在2026-07及更高版本的API中,使用新源模型的集合会从collections查询、collection(id:)查找以及其他返回集合的字段中返回。在早期API版本中,由于旧的ruleSet结构无法表示它们,因此使用新功能的那些相同集合会被过滤掉。迁移到2026-07 API版本以查看和管理商店中的所有集合。
这些更改是非破坏性的:已弃用的成员在 2026-07 中仍可查询,因此您可以逐步进行迁移。
GraphQL Admin API 的新增功能
集合来源与条件
新的Collection.sources字段返回支持该集合的一个或多个sources。两种具体类型实现了新的CollectionSource接口:
- CollectionConditionsSource:通过类型化的包含conditions加上手动selections包含产品,并可通过排除conditions选择性地排除产品。每个源必须针对由新的CollectionSourceTargetType枚举设置的PRODUCTS或VARIANTS。
- CollectionSubCollectionsSource:从引用的一个或多个集合中提取成员资格。
条件是强类型的:每个条件都使用具有匹配输入类型的具体类型。排除条件包括包含条件的子集,或使用基于集合的排除条件来定位特定集合。一组条件的匹配行为由新的CollectionConditionMatchType枚举控制:ANY表示至少一个条件必须匹配;ALL表示每个条件都必须匹配。
要在集合上定义源,collectionCreate和collectionUpdate现在接受类型为新的CollectionCreateInput或CollectionUpdateInput的collection参数。CollectionUpdateInput暴露了sourcesToCreate、sourcesToUpdate和sourcesToDelete,以便您可以增量更新源而无需替换整个集合定义。
可共享的应用程序集合来源
其shareable字段为true的CollectionConditionsSource由调用应用拥有,并且可以链接到商店的许多集合。使用三个新的突变来管理这些可共享的源,并使用两个新的顶级查询来发现它们:
- collectionConditionsSourceCreate、collectionConditionsSourceUpdate和collectionConditionsSourceDelete管理应用自己的可共享源。
- collectionConditionsSources(appId:) 返回由特定应用程序拥有的可共享来源。
- collectionConditionsSourcesByApp 对为该商店发布可共享来源的应用程序进行分页。
要将可共享源附加到特定集合,请在集合的创建或更新输入的sources或sourcesToCreate字段中使用CollectionShareableSourceInput { sourceId }。只有拥有应用才能更新或删除其可共享源。删除可共享源会自动将其从链接到的每个集合中分离。
仅当相同的逻辑需要在多个集合中重复使用时,才使用可共享来源。否则,请使用集合突变来创建、更新或删除来源。
其他新增内容
- Collection.subCollectionEligibility返回用于将集合用作子集合目标的单独inclusion和exclusion资格状态,并具有稳定的SubCollectionIneligibleReason枚举。
- collectionConditionMetafieldDefinitions 返回可用于包含条件的元字段定义,范围限定为调用应用程序的访问权限。
- CollectionSourceExclusionConditionUpdateInput增加了collection字段,因此您可以就地更新基于集合的排除条件,而无需删除并重新创建它。
Shopify Functions 中的变体级集合成员资格
Shopify Functions中的ProductVariant类型增加了两个新字段:
- 当变体位于任何指定集合中时,inAnyCollection(ids: [ID!]!): Boolean!返回true。
- inCollections(ids: [ID!]!): [CollectionMembership!]! 返回该变体的按集合划分的成员资格。
当变体本身被包含在该集合中时,该变体就是该集合的成员。现有的Product.inAnyCollection和Product.inCollections继续返回true,只要完整产品位于任何指定集合中,无论变体级别的成员资格如何。
弃用
- Collection.ruleSet已弃用,推荐使用Collection.sources。每个ruleSet规则都有一个等效的包含条件(例如,标签规则映射到CollectionSourceInclusionConditionProductTag)。旧版结构不支持子集合、排除条件和多来源。
- collectionCreate(input:)和collectionUpdate(input:)已弃用,推荐使用collectionCreate(collection:)和collectionUpdate(collection:)。旧的input参数仍接受CollectionInput(及其ruleSet字段),但只有新的collection参数才能定义sources。如果同时提供两个参数,collection参数优先。
- 如果您的应用读取Collection.ruleSet或写入input.ruleSet,请切换到Collection.sources和新的collection参数。旧版结构无法表达多来源、排除条件或可共享来源,使用这些功能的集合会被过滤掉,不出现在2026-07之前的查询结果中。
- 如果您的函数需要变体级别的集合成员资格,请在ProductVariant上调用inAnyCollection或inCollections。现有的Product.inAnyCollection和Product.inCollections字段继续返回产品级别的成员资格。

