Giá trị Meta
Để lấy và lọc theo giá trị meta, các khóa meta phải được thêm vào danh sách cho phép.
Chúng ta có thể lấy giá trị meta cho các custom post, 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 các 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
Truy vấn nhiều giá trị meta cùng lúc
Chúng ta có thể truy vấn nhiều mục meta dưới dạng đối tượng JSON, thông qua trường meta (cho các kiểu tương tự như trên).
Đối tượng JSON có:
- Khóa: khóa meta
- Giá trị: danh sách các giá trị (nếu giá trị meta là một scalar, nó được lấy dưới dạng danh sách 1 phần tử)
Truy vấn các khóa meta
Chúng ta có thể lấy danh sách tất cả các khóa meta được phép trong thực thể, thông qua trường metaKeys (cho các kiểu tương tự như trên).
Trường này là một phần tử dữ liệu "nhạy cảm".
Lọc theo meta
Các custom post, bình luận, người dùng và phân loại (thẻ và danh mục) cũng có thể được lọc theo meta, sử dụng input metaQuery.
Input này cung cấp một cải tiến so với cách các đối số meta_query được cung cấp (cho các hàm get_posts, get_users, v.v.), ở chỗ các kiểm tra kiểu dữ liệu được thực thi nghiêm ngặt trong schema GraphQL, và chỉ các tổ hợp có ý nghĩa mới được hiển thị.
Điều này được thực hiện bằng cách sử dụng trường input "oneof" compareBy, cung cấp 4 khả năng. Tùy thuộc vào tùy chọn được chọn, các toán tử khác nhau có thể được dùng cho việc so sánh:
Input compareBy | Các toán tử có thể dùng |
|---|---|
1. key | EXISTSNOT EXISTS |
2. numericValue | =!=>>=<\<= |
3. stringValue | =!=LIKENOT LIKEREGEXPNOT REGEXPRLIKE |
4. arrayValue | INNOT INBETWEENNOT BETWEEN |
Ngoài ra, khi so sánh theo key, không cần cung cấp input value.
Chúng ta có thể truyền nhiều mục trong metaQuery, và quyết định thực hiện AND hay OR cho các điều kiện của chúng bằng cách truyền input relation vào mục đầu tiên trong danh sách.