I am writing some PHP which allows users of my site to submit a form and query posts by their post_meta. Everything works fine except for one thing, I used Advanced Custom Fields to create the post_meta and ACF saves meta values as a serialized array. I need to keep the data in this format so ACF can pre-fill the custom fields in the admin panel. I need a way to compare an array of values (the user selects via checkboxes in the form) to a serialized array in the database. The first part of my query looks like the following, with $amenities being the array of checkbox values:
$the_query = new WP_Query(
array(
'post_type' => 'listing',
'meta_query' => array(
array(
'key' => 'distance',
'value' => $distance,
'type' => 'numeric',
'compare' => '<='
),
array(
'key' => 'amenities',
'value' => $amenities[0],
'compare' => 'LIKE'
),
array(
'key' => 'amenities',
'value' => $amenities[1],
'compare' => 'LIKE'
),
array(
'key' => 'amenities',
'value' => $amenities[2],
'compare' => 'LIKE'
)
)
)
);
The only way I can get the query to work is by querying for each possible value ($amenities[#]) the user could have entered in the checkboxes but this seems to be too cumbersome for my database to handle.