ค่า Meta
ในการดึงและกรองตามค่า meta นั้น meta key ของค่าเหล่านั้นต้องถูกเพิ่มลงใน allowlist ก่อน
เราสามารถดึงค่า meta สำหรับ custom post, ผู้ใช้, ความคิดเห็น และ taxonomy (แท็กและหมวดหมู่) ได้โดยการ query ฟิลด์ metaValue (สำหรับค่าเดียว) และ metaValues (สำหรับอาร์เรย์ของค่า) จากชนิดข้อมูลที่เกี่ยวข้อง:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
การ query ค่า meta หลายค่าพร้อมกัน
เราสามารถ query รายการ meta หลายรายการเป็น JSON object ได้ผ่านฟิลด์ meta (สำหรับชนิดข้อมูลเดียวกันกับข้างต้น)
JSON object ประกอบด้วย:
- Key: meta key
- Value: รายการของค่า (หากค่า meta เป็น scalar จะถูกดึงมาเป็นรายการที่มี 1 องค์ประกอบ)
การ query meta key
เราสามารถดึงรายการ meta key ที่อนุญาตทั้งหมดในเอนทิตีได้ผ่านฟิลด์ metaKeys (สำหรับชนิดข้อมูลเดียวกันกับข้างต้น)
ฟิลด์นี้เป็น องค์ประกอบข้อมูล “sensitive”
การกรองตาม meta
custom post, ความคิดเห็น, ผู้ใช้ และ taxonomy (แท็กและหมวดหมู่) ก็สามารถกรองตาม meta ได้เช่นกัน โดยใช้อินพุต metaQuery
อินพุตนี้เป็นการปรับปรุงจาก วิธีการที่ระบุ args meta_query (ให้กับฟังก์ชัน get_posts, get_users ฯลฯ) โดยที่การตรวจสอบความถูกต้องของชนิดข้อมูลจะถูกบังคับใช้อย่างเข้มงวดใน GraphQL schema และมีเพียงการผสมผสานที่สมเหตุสมผลเท่านั้นที่ถูกเปิดเผย
สิ่งนี้ทำได้โดยการใช้ฟิลด์อินพุตแบบ "oneof" ชื่อ compareBy ซึ่งมี 4 ตัวเลือก ขึ้นอยู่กับตัวเลือกที่เลือก จะสามารถใช้ตัวดำเนินการที่แตกต่างกันสำหรับการเปรียบเทียบได้:
อินพุต compareBy | ตัวดำเนินการที่เป็นไปได้ |
|---|---|
1. key | EXISTSNOT EXISTS |
2. numericValue | =!=>>=<\<= |
3. stringValue | =!=LIKENOT LIKEREGEXPNOT REGEXPRLIKE |
4. arrayValue | INNOT INBETWEENNOT BETWEEN |
นอกจากนี้ เมื่อเปรียบเทียบตาม key ก็ไม่จำเป็นต้องระบุอินพุต value
เราสามารถส่งหลายรายการภายใต้ metaQuery ได้ และตัดสินใจว่าจะทำ AND หรือ OR ของเงื่อนไขเหล่านั้นโดยการส่งอินพุต relation ในรายการแรกของลิสต์