Truy vấn các trường dữ liệu “nhạy cảm”
Lược đồ GraphQL phải cân bằng giữa các trường công khai và riêng tư, nhằm tránh lộ thông tin cá nhân trong một API công khai.
Theo mặc định, tất cả các trường trong lược đồ GraphQL chỉ có thể truy cập dữ liệu công khai. Ví dụ, posts chỉ có thể lấy các bài viết có trạng thái "publish".
Ngoài ra, chúng ta có thể thêm các trường dữ liệu "nhạy cảm" và các input field vào lược đồ, dự kiến chỉ dành cho quản trị viên sử dụng, được bật cho một custom endpoint hoặc persisted query cụ thể, đồng thời có thể lấy dữ liệu riêng tư.
Ví dụ, đối số posts(filter:) sẽ chứa thêm một input field status, cho phép chúng ta lấy các bài viết chưa được xuất bản (ví dụ: các bài viết có trạng thái "pending", "draft" hoặc "trash") cho bất kỳ người dùng nào. Tương tự, lược đồ sẽ hiển thị trường Post.status để xem dữ liệu này.
Danh sách các phần tử dữ liệu "nhạy cảm"
Các phần tử dưới đây (trong số những phần tử khác) theo mặc định được coi là dữ liệu riêng tư:
User:
emailrolescapabilitiesmetaKeys
Custom Posts:
statuswpAdminEditURLhasPasswordpasswordrawContentrawTitlerawExcerptmetaKeys
Comments:
statusrawContentmetaKeys
Taxonomies:
metaKeys
Custom Post Mutations:
- input
authorBy
Menu Items:
rawTitle
Ghi đè cấu hình mặc định
Các phần tử liệt kê ở trên có thể được công khai hóa.
Trong trang Cài đặt, ở tab tương ứng cho từng phần tử, có một hộp kiểm để cấu hình xem có nên coi chúng là "nhạy cảm" hay "bình thường":

Kiểm tra các phần tử dữ liệu "nhạy cảm" qua schema introspection
Thuộc tính isSensitiveDataElement được thêm vào trường extensions khi thực hiện schema introspection. Để tìm hiểu các phần tử dữ liệu "nhạy cảm" trong lược đồ, hãy thực thi query này:
query ViewSensitiveDataElements {
__schema {
types {
name
fields {
name
extensions {
isSensitiveDataElement
}
args {
name
extensions {
isSensitiveDataElement
}
}
}
inputFields {
name
extensions {
isSensitiveDataElement
}
}
enumValues {
name
extensions {
isSensitiveDataElement
}
}
}
}
}Sau đó tìm kiếm các mục có "isSensitiveDataElement": true trong kết quả.
Thêm các phần tử dữ liệu "nhạy cảm" vào các endpoint
Việc thêm các phần tử dữ liệu "nhạy cảm" vào lược đồ có thể được cấu hình như sau, theo thứ tự ưu tiên:
✅ Chế độ cụ thể cho custom endpoint hoặc persisted query, được định nghĩa trong cấu hình lược đồ

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

Khi nào nên sử dụng
Sử dụng bất cứ khi nào được phép hiển thị thông tin riêng tư, chẳng hạn như khi xây dựng một trang web tĩnh, lấy dữ liệu từ một WordPress instance cục bộ (tức là không phải API công khai).