Định nghĩa danh sách cho phép/từ chối đối với các giá trị meta
Chúng ta có thể truy xuất các giá trị meta cho các bài đăng tùy chỉnh, người dùng, bình luận và phân loại (thẻ và danh mục) bằng cách truy vấn các trường metaValue (cho một giá trị đơn) và metaValues (cho một mảng giá trị) từ kiểu tương ứng:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Chúng ta cũng có thể lọc kết quả cho các bài đăng tùy chỉnh, người dùng, bình luận và phân loại (thẻ và danh mục) dựa trên meta, thông qua trường đầu vào metaQuery.
Đối với cả truy vấn lẫn lọc, các giá trị meta có thể là công khai hoặc riêng tư. Ví dụ, meta người dùng bao gồm mục wp_capabilities, vốn là riêng tư, trong khi description là công khai. Và còn có last_name, có thể công khai hoặc riêng tư tùy thuộc vào ứng dụng.
Plugin Gato GraphQL không áp đặt khóa meta nào là công khai và khóa nào là riêng tư; điều này phải được cấu hình một cách rõ ràng. Theo mặc định, danh sách các khóa meta được phép là rỗng.
Phản hồi giá trị meta
Khi truy vấn một khóa meta mà quyền truy cập của nó không được cho phép trong trang Cài đặt tương ứng, truy vấn sẽ trả về lỗi.
Ví dụ, thực thi queries này:
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}Trả về:
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}Nếu khóa meta không tồn tại cho đối tượng được truy vấn, hoặc giá trị của nó rỗng, phản hồi là null. Ngược lại, phản hồi là giá trị meta.
Cấu hình các khóa meta được phép
Đây là mô tả cho mô-đun "Custom Post Meta". Đối với các mô-đun Users, Comments và Taxonomies, quy trình tương tự.
Chúng ta phải cấu hình danh sách các khóa meta có thể được truy vấn thông qua các trường meta.
Mỗi mục có thể là:
- Một regex (biểu thức chính quy), nếu nó được bao quanh bởi
/hoặc#, hoặc - Khóa meta đầy đủ, trong các trường hợp khác
Ví dụ, bất kỳ mục nào trong số này đều khớp với khóa meta "_edit_last":
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
Có 2 nơi để thực hiện cấu hình này, theo thứ tự ưu tiên:
- Tùy chỉnh: Trong Cấu hình Schema tương ứng
- Chung: Trong trang Cài đặt
Trong Cấu hình Schema được áp dụng cho endpoint, chọn tùy chọn "Use custom configuration" rồi nhập các mục mong muốn:

Ngược lại, các mục được định nghĩa trong tab "Schema Custom Post Meta" từ Cài đặt sẽ được sử dụng:

Có 2 hành vi, "Allow access" và "Deny access":
- Allow access: chỉ các mục đã cấu hình mới có thể truy cập, không có mục nào khác
- Deny access: các mục đã cấu hình không thể truy cập, tất cả các mục khác đều có thể
