ฉันกำลังทำงานในโครงการที่ฉันสร้างประเภทโพสต์ที่กำหนดเองและข้อมูลที่กำหนดเองที่ป้อนผ่านกล่องเมตาที่เชื่อมโยงกับประเภทโพสต์ที่กำหนดเองของฉัน ไม่ว่าด้วยเหตุผลใดฉันจึงตัดสินใจเขียนโค้ดเมตาบ็อกในลักษณะที่อินพุตในแต่ละเมท็อกซ์เป็นส่วนหนึ่งของอาเรย์ ตัวอย่างเช่นฉันกำลังเก็บลองจิจูดและละติจูด:
<p>
<label for="latitude">Latitude:</label><br />
<input type="text" id="latitude" name="coordinates[latitude]" class="full-width" value="" />
</p>
<p>
<label for="longitude">Longitude:</label><br />
<input type="text" id="longitude" name="coordinates[longitude]" class="full-width" value="" />
</p>
ไม่ว่าจะด้วยเหตุผลใดฉันชอบความคิดที่ว่ามีการเข้า postmeta เอกพจน์สำหรับแต่ละ metabox ที่save_post
ตะขอฉันบันทึกข้อมูลดังนี้:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
ฉันทำสิ่งนี้เพราะฉันมีสาม metaboxes และฉันชอบเพียงแค่มี 3 postmeta ค่าสำหรับแต่ละโพสต์; อย่างไรก็ตามฉันได้ตระหนักถึงปัญหาที่อาจเกิดขึ้นกับสิ่งนี้แล้ว ฉันอาจต้องการใช้ WP_Query เพื่อดึงโพสต์บางอย่างตามค่าเมตาเหล่านี้ ตัวอย่างเช่นฉันอาจต้องการรับโพสต์ทั้งหมดที่มีค่าละติจูดสูงกว่า 50 หากฉันมีข้อมูลนี้ในฐานข้อมูลทีละรายการบางทีอาจใช้คีย์latitude
ฉันจะทำสิ่งต่อไปนี้:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
เนื่องจากฉันมีละติจูดเป็นส่วนหนึ่งของ_coordinates
postmeta สิ่งนี้จะไม่ทำงาน
ดังนั้นคำถามของฉันคือมีวิธีใช้meta_query
ในการสอบถามอาร์เรย์ลำดับเหมือนที่ฉันมีในสถานการณ์นี้หรือไม่