스키마 네임스페이스
플러그인에 의해 스키마에 추가된 모든 타입과 인터페이스에 자동으로 네임스페이스를 적용합니다.
스키마에 네임스페이스를 적용하면 명명 충돌을 방지할 수 있습니다. 명명 충돌은 서로 다른 소유자(예: 회사 내 다른 팀, 또는 서드파티 플러그인 간)가 타입이나 인터페이스에 동일한 이름을 사용할 때 발생합니다.
예를 들어, "AwesomeWP"라는 회사에 Tutorials 팀과 Sales 팀이 있고, 두 팀 모두 회사의 GraphQL 스키마에 Product 타입을 생성하면 충돌이 발생합니다.
스키마에 네임스페이스를 적용하면 두 타입이 자동으로 AwesomeWPTutorialsProduct와 AwesomeWPSalesProduct로 변환되어, 스키마를 수동으로 수정하거나 팀 간에 조율할 필요 없이 충돌을 방지할 수 있습니다.
WordPress 데이터 모델의 엔티티에는 네임스페이스가 적용되지 않습니다
WordPress 데이터 모델은 표준으로 간주되며, 해당 GraphQL 스키마의 타입(Post, User 등)과 인터페이스(Commentable, WithMeta 등)에는 네임스페이스가 적용되지 않습니다.
엔드포인트에서의 스키마 네임스페이스
스키마에 네임스페이스를 적용할지 여부는 2가지 수준에서 정의할 수 있습니다. 우선순위 순으로:
1. 스키마 설정에서 정의
커스텀 엔드포인트 또는 persisted query에 대한 스키마 네임스페이스는 해당 스키마 설정에서 정의할 수 있습니다:

2. 설정에서 정의된 기본 모드
스키마 설정의 값이 "Default"인 경우 설정에서 정의된 모드가 사용됩니다:

네임스페이스가 적용된 스키마 시각화
Voyager 클라이언트를 사용하여 네임스페이스가 적용된 스키마를 시각화할 수 있습니다.
네임스페이스가 비활성화된 경우 WordPress 스키마는 다음과 같이 표시됩니다:

활성화하면 플러그인에 의해 추가된 타입과 인터페이스에 네임스페이스가 적용되어 다음과 같이 표시됩니다:

네임스페이스가 적용된(또는 적용되지 않은) 타입 이름 쿼리
네임스페이스가 활성화되면 타입은 네임스페이스가 적용된 타입 이름과 적용되지 않은 타입 이름 모두로 쿼리할 수 있습니다. 따라서 충돌하는 타입이 포함된 쿼리만 수정하면 되며, 모든 쿼리를 수정할 필요는 없습니다.
예를 들어, AwesomeWP의 Sales 팀에도 Discount 타입이 있는 경우 이 타입 이름을 요청하는 쿼리는 계속 작동합니다:
query {
discounts {
...DiscountProps
}
}
fragment DiscountProps on Discount {
price
dateRange
}충돌하는 타입 Product만 모호함을 제거하기 위해 쿼리 내에서 AwesomeWPSalesProduct로 업데이트해야 합니다:
query {
products {
...ProductProps
}
}
fragment ProductProps on AwesomeWPSalesProduct {
price
dateRange
}GraphQL 사양
이 기능은 현재 GraphQL 사양에 포함되어 있지 않지만 다음에서 요청되었습니다: