คู่มือการใช้งาน
คู่มือการใช้งานค่า Meta

ค่า Meta

ในการดึงและกรองตามค่า meta นั้น meta key ของค่าเหล่านั้นต้องถูกเพิ่มลงใน allowlist ก่อน

เราสามารถดึงค่า meta สำหรับ custom post, ผู้ใช้, ความคิดเห็น และ taxonomy (แท็กและหมวดหมู่) ได้โดยการ query ฟิลด์ metaValue (สำหรับค่าเดียว) และ metaValues (สำหรับอาร์เรย์ของค่า) จากชนิดข้อมูลที่เกี่ยวข้อง:

  • Post.metaValue
  • Post.metaValues
  • GenericCustomPost.metaValue
  • GenericCustomPost.metaValues
  • User.metaValue
  • User.metaValues
  • Comment.metaValue
  • Comment.metaValues
  • PostTag.metaValue
  • PostTag.metaValues
  • PostCategory.metaValue
  • PostCategory.metaValues
  • GenericTag.metaValue
  • GenericTag.metaValues
  • GenericCategory.metaValue
  • GenericCategory.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. keyEXISTS
NOT EXISTS
2. numericValue=
!=
>
>=
<
\<=
3. stringValue=
!=
LIKE
NOT LIKE
REGEXP
NOT REGEXP
RLIKE
4. arrayValueIN
NOT IN
BETWEEN
NOT BETWEEN

นอกจากนี้ เมื่อเปรียบเทียบตาม key ก็ไม่จำเป็นต้องระบุอินพุต value

เราสามารถส่งหลายรายการภายใต้ metaQuery ได้ และตัดสินใจว่าจะทำ AND หรือ OR ของเงื่อนไขเหล่านั้นโดยการส่งอินพุต relation ในรายการแรกของลิสต์