Pracuję nad projektem, w którym tworzę niestandardowy typ postu i niestandardowe dane wprowadzane za pomocą pól meta powiązanych z moim niestandardowym typem postu. Z jakiegokolwiek powodu postanowiłem zakodować meta-boxy w taki sposób, aby dane wejściowe w każdym metaboksie były częścią tablicy. Na przykład przechowuję długość i szerokość geograficzną:
<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>
Z jakiegokolwiek powodu podobał mi się pomysł posiadania osobnego wpisu postmeta dla każdego metaboxa. Na save_post
haku zapisuję dane w następujący sposób:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
Zrobiłem to, ponieważ mam trzy metaboksy i lubię mieć 3 wartości postmeta dla każdego postu; zdałem sobie jednak sprawę z tego potencjalnego problemu. Mogę chcieć użyć WP_Query do wyciągania tylko niektórych postów na podstawie tych meta wartości. Na przykład mogę chcieć uzyskać wszystkie posty, które mają wartości szerokości geograficznej powyżej 50. Gdybym miał te dane w bazie danych osobno, być może używając klucza latitude
, zrobiłbym coś takiego:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
Ponieważ mam szerokość geograficzną jako część _coordinates
postmeta, to nie zadziałałoby.
Moje pytanie brzmi: czy istnieje sposób wykorzystania meta_query
zapytania do szeregowanej tablicy, jak w tym scenariuszu?