I'm working on a project in which I'm creating a custom post type and custom data entered via meta boxes associated with my custom post type. For whatever reason I decided to code the meta boxes in such a way that the inputs in each metabox are part of an array. For instance, I'm storing longitude and latitude:
<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>
For whatever reason, I liked the idea of having a singular postmeta entry for each metabox. On the
save_post hook, I save the data like so:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
I did this because I have three metaboxes and I like just having 3 postmeta values for each post; however, I've now realized a potential issue with this. I may want to use WP_Query to only pull out certain posts based these meta values. For instance, I may want to get all posts that have latitude values above 50. If I had this data in the database individually, perhaps using the key
latitude, I would do something like:
$args = array( 'post_type' => 'my-post-type', 'meta_query' => array( array( 'key' => 'latitude', 'value' => '50', 'compare' => '>' ) ) ); $query = new WP_Query( $args );
Since I have the latitude as part of the
_coordinates postmeta, this would not work.
So, my question is, is there a way to utilize
meta_query to query a serialized array like I have in this scenario?