Phân vùng tên (Namespacing) Schema
Tự động thêm namespace cho tất cả các type và interface được plugin thêm vào schema.
Phân vùng tên schema giúp tránh xung đột tên, xảy ra khi các chủ thể khác nhau (ví dụ: các nhóm khác nhau trong công ty, hoặc giữa các plugin bên thứ ba) sử dụng cùng một tên cho một type hoặc interface.
Ví dụ, giả sử công ty "AwesomeWP" có nhóm Tutorials và nhóm Sales, và cả hai đều tạo một type Product cho schema GraphQL của công ty, gây ra xung đột.
Khi áp dụng phân vùng tên cho schema, hai type đó sẽ tự động được chuyển thành AwesomeWPTutorialsProduct và AwesomeWPSalesProduct, tránh xung đột mà không cần chỉnh sửa schema thủ công hay yêu cầu các nhóm phối hợp với nhau.
Các thực thể từ mô hình dữ liệu WordPress không được đặt namespace
Mô hình dữ liệu WordPress được coi là chuẩn, và các type của schema GraphQL (như Post và User) cũng như các interface (như Commentable và WithMeta) không được đặt namespace.
Phân vùng tên schema trong các endpoint
Có 2 cấp độ để xác định liệu schema có được đặt namespace hay không. Theo thứ tự ưu tiên:
1. Trong cấu hình schema
Việc đặt namespace cho schema đối với một custom endpoint hoặc persisted query có thể được định nghĩa thông qua cấu hình schema tương ứng:

2. Chế độ mặc định, được định nghĩa trong Cài đặt
Nếu cấu hình schema có giá trị "Default", nó sẽ sử dụng chế độ được định nghĩa trong Cài đặt:

Trực quan hóa schema đã được đặt namespace
Sử dụng Voyager client để trực quan hóa schema đã được đặt namespace.
Khi namespacing bị tắt, schema WordPress trông như sau:

Khi được bật, các type và interface được thêm bởi plugin sẽ được đặt namespace, trông như sau:

Truy vấn tên type (có/không có) namespace
Sau khi bật namespacing, các type có thể được truy vấn bằng cả tên có namespace lẫn tên không có namespace. Do đó, chỉ những queries liên quan đến các type xung đột mới cần được chỉnh sửa, không phải tất cả.
Ví dụ, nếu nhóm Sales của AwesomeWP cũng có một type Discount, một query yêu cầu tên type này vẫn hoạt động bình thường:
query {
discounts {
...DiscountProps
}
}
fragment DiscountProps on Discount {
price
dateRange
}Chỉ type xung đột Product mới cần được cập nhật thành AwesomeWPSalesProduct trong query, để loại bỏ mọi sự mơ hồ:
query {
products {
...ProductProps
}
}
fragment ProductProps on AwesomeWPSalesProduct {
price
dateRange
}Đặc tả GraphQL
Chức năng này hiện chưa là một phần của đặc tả GraphQL, nhưng đã được đề xuất trong: