งานแรก ๆ เกี่ยวกับอย่างที่คุณคาดหวัง:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
และNOT LIKE
เป็นตัวดำเนินการ SQL ที่ให้คุณเพิ่มสัญลักษณ์ไวด์การ์ดดังนั้นคุณอาจมีคิวรีเมตาที่มีลักษณะดังนี้:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
นี่จะส่งคืนโพสต์ทั้งหมดที่ค่าเมตา "ชื่อ" มีสตริง "Pat" ในกรณีนี้ "Pat" "Patricia" และ "Patrick" จะถูกส่งกลับมาให้คุณ มีไม่ใช่ WordPress กวดวิชาคำอธิบายที่เป็นที่นี่
เพิ่มอักขระตัวแทน%
ไม่จำเป็นเพราะจะได้รับเพิ่มตามค่าเริ่มต้นเช่น @Herb กล่าวในด้านล่างของเขาคำตอบ เช่นนี้$meta_value = '%' . like_escape( $meta_value ) . '%';
- ดูแหล่งที่มา
IN
และNOT IN
เลือกการแข่งขันใด ๆ ที่อยู่ใน (หรือไม่ได้อยู่) อาร์เรย์ที่กำหนด ดังนั้นคุณสามารถทำสิ่งนี้:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
และจะได้รับโพสต์ทั้งหมดที่มีการตั้งค่าสีเป็นสีแดงสีเขียวหรือสีน้ำเงิน การใช้ 'ไม่ได้อยู่ใน' จะเป็นการย้อนกลับโพสต์ใด ๆ ที่มีค่าถูกตั้งค่าเป็นอย่างอื่นนอกเหนือจากที่อยู่ในอาร์เรย์
SQL ที่สร้างขึ้นสำหรับสิ่งนี้จะมีลักษณะดังนี้:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
และNOT BETWEEN
อนุญาตให้คุณกำหนดช่วงของค่าที่สามารถแก้ไขได้และต้องการให้คุณกำหนดค่าสองค่าในอาร์เรย์ใน meta_query ของคุณ:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
นี่จะทำให้คุณโพสต์ทั้งหมดซึ่งราคาอยู่ระหว่าง 20 และ 30 บุคคลนี้ขุดลงในตัวอย่างที่มีวันที่
NOT EXISTS
เป็นเหมือนเสียง - ค่าเมตาไม่ได้ถูกตั้งค่าหรือถูกตั้งค่าเป็นศูนย์ สิ่งที่คุณต้องการสำหรับแบบสอบถามนั้นคือตัวดำเนินการที่สำคัญและการเปรียบเทียบ:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
บุคคลนี้ต้องการสอบถามค่าเมตาที่ไม่มีอยู่และต้องการให้พวกเขาเล่นกับคนอื่นได้ดี
หวังว่านี่จะช่วยได้!
meta_query
meta_
หากคุณกำลังใช้$query->meta_key
,$query->meta_value
ฯลฯ แล้วเหล่านี้จะยังคงรักษาคำนำหน้า