Tôi đang làm việc trong một dự án trong đó tôi đang tạo một loại bài đăng tùy chỉnh và dữ liệu tùy chỉnh được nhập thông qua các hộp meta được liên kết với loại bài đăng tùy chỉnh của tôi. Vì bất kỳ lý do gì, tôi quyết định mã hóa các hộp meta theo cách mà các đầu vào trong mỗi metabox là một phần của một mảng. Chẳng hạn, tôi đang lưu trữ kinh độ và vĩ độ:
<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>
Vì bất kỳ lý do gì, tôi thích ý tưởng có một mục nhập postmeta duy nhất cho mỗi metabox. Trên save_post
móc, tôi lưu dữ liệu như vậy:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
Tôi đã làm điều này bởi vì tôi có ba metaboxes và tôi thích chỉ có 3 giá trị postmeta cho mỗi bài đăng; tuy nhiên, bây giờ tôi đã nhận ra một vấn đề tiềm năng với điều này. Tôi có thể muốn sử dụng WP_Query để chỉ rút ra một số bài đăng nhất định dựa trên các giá trị meta này. Chẳng hạn, tôi có thể muốn nhận tất cả các bài đăng có giá trị vĩ độ trên 50. Nếu tôi có dữ liệu này trong cơ sở dữ liệu riêng lẻ, có lẽ sử dụng khóalatitude
, tôi sẽ làm một cái gì đó như:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
Vì tôi có vĩ độ là một phần của _coordinates
postmeta, điều này sẽ không hoạt động.
Vì vậy, câu hỏi của tôi là, có cách nào để sử dụng meta_query
để truy vấn một mảng nối tiếp như tôi có trong kịch bản này không?