การกำหนดรายการอนุญาต/ปฏิเสธสำหรับค่าเมตา
เราสามารถดึงค่าเมตาสำหรับโพสต์แบบกำหนดเอง ผู้ใช้ คอมเมนต์ และแท็กโซโนมี (แท็กและหมวดหมู่) ได้โดยการ queries ฟิลด์ metaValue (สำหรับค่าเดียว) และ metaValues (สำหรับอาร์เรย์ของค่า) จากประเภทที่เกี่ยวข้อง:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
นอกจากนี้ เรายังสามารถกรองผลลัพธ์สำหรับโพสต์แบบกำหนดเอง ผู้ใช้ คอมเมนต์ และแท็กโซโนมี (แท็กและหมวดหมู่) ตามเมตาได้ ผ่านฟิลด์อินพุต metaQuery
ทั้งในการ queries และการกรอง ค่าเมตาอาจเป็นสาธารณะหรือส่วนตัว ตัวอย่างเช่น เมตาของผู้ใช้มีรายการ wp_capabilities ซึ่งเป็นส่วนตัว ในขณะที่ description เป็นสาธารณะ และ last_name อาจเป็นสาธารณะหรือส่วนตัวขึ้นอยู่กับแอปพลิเคชัน
ปลั๊กอิน Gato GraphQL ไม่ได้กำหนดว่าเมตาคีย์ใดเป็นสาธารณะและใดเป็นส่วนตัว ต้องมีการตั้งค่าอย่างชัดเจน โดยค่าเริ่มต้น รายการเมตาคีย์ที่อนุญาตจะว่างเปล่า
การตอบสนองของค่าเมตา
เมื่อ queries เมตาคีย์ที่ไม่ได้รับอนุญาตในหน้าการตั้งค่าที่เกี่ยวข้อง queries จะส่งคืนข้อผิดพลาด
ตัวอย่างเช่น การรัน queries นี้:
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}จะได้รับ:
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}หากเมตาคีย์ไม่มีอยู่สำหรับอ็อบเจกต์ที่ queries หรือค่าว่างเปล่า การตอบสนองจะเป็น null มิเช่นนั้น การตอบสนองจะเป็นค่าเมตา
การตั้งค่าเมตาคีย์ที่อนุญาต
นี่คือคำอธิบายสำหรับโมดูล "Custom Post Meta" สำหรับโมดูล Users, Comments และ Taxonomies ขั้นตอนจะคล้ายกัน
เราต้องตั้งค่ารายการเมตาคีย์ที่สามารถ queries ได้ผ่านฟิลด์เมตา
แต่ละรายการอาจเป็น:
- นิพจน์ทั่วไป (regex) หากล้อมรอบด้วย
/หรือ#หรือ - เมตาคีย์แบบเต็ม ในกรณีอื่น
ตัวอย่างเช่น รายการเหล่านี้ตรงกับเมตาคีย์ "_edit_last":
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
มีสถานที่ 2 แห่งที่สามารถทำการตั้งค่านี้ได้ เรียงตามลำดับความสำคัญ:
- แบบกำหนดเอง: ใน Schema Configuration ที่เกี่ยวข้อง
- ทั่วไป: ในหน้าการตั้งค่า
ใน Schema Configuration ที่ใช้กับ endpoint ให้เลือกตัวเลือก "Use custom configuration" จากนั้นป้อนรายการที่ต้องการ:

มิเช่นนั้น รายการที่กำหนดในแท็บ "Schema Custom Post Meta" จากการตั้งค่าจะถูกใช้:

มีพฤติกรรม 2 แบบ คือ "Allow access" และ "Deny access":
- Allow access: เข้าถึงได้เฉพาะรายการที่ตั้งค่าไว้เท่านั้น ไม่สามารถเข้าถึงรายการอื่นได้
- Deny access: รายการที่ตั้งค่าไว้ไม่สามารถเข้าถึงได้ แต่รายการอื่นทั้งหมดสามารถเข้าถึงได้
