Saya sedang mengerjakan proyek tempat saya membuat jenis posting khusus dan data khusus yang dimasukkan melalui kotak meta yang terkait dengan jenis posting kustom saya. Untuk alasan apa pun saya memutuskan untuk memberi kode pada kotak meta sedemikian rupa sehingga input di setiap kotak metabox adalah bagian dari array. Misalnya, saya menyimpan garis bujur dan lintang:
<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>
Untuk alasan apa pun, saya menyukai gagasan memiliki entri postmeta tunggal untuk setiap metabox. Di save_post
hook, saya menyimpan data seperti ini:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
Saya melakukan ini karena saya memiliki tiga metabox dan saya suka hanya memiliki 3 nilai postmeta untuk setiap posting; Namun, saya sekarang menyadari masalah potensial dengan ini. Saya mungkin ingin menggunakan WP_Query hanya untuk menarik posting tertentu berdasarkan nilai-nilai meta ini. Misalnya, saya mungkin ingin mendapatkan semua posting yang memiliki nilai garis lintang di atas 50. Jika saya memiliki data ini di database secara individual, mungkin menggunakan kunci latitude
, saya akan melakukan sesuatu seperti:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
Karena saya memiliki garis lintang sebagai bagian dari _coordinates
postmeta, ini tidak akan berhasil.
Jadi, pertanyaan saya adalah, apakah ada cara untuk memanfaatkan meta_query
untuk meminta array serial seperti yang saya miliki dalam skenario ini?