I am using my custom filter. So in this search there are many checkboxes (have city name) and user selected some of them the post show the search result base on the checkbox.
First i sotre the city/state name by using the add_post_meta
add_post_meta($post_id, 'post_state' , $state, true);
So after that when user filter the post. i am using the code
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'sortbydestination' ) :
$stateName = $_POST['stateName'];
unset($_POST);
endif;
$args = array(
'posts_per_page' => 30,
'paged' => $paged,
'post_type' => 'post',
'post_status' => 'publish',
'meta_query' => array(
'key' => 'post_state',
'value' => array($stateName)
)
);
The checkbox html is generated by jquery which is
jQuery('#state_div').append('<label><input type="checkbox" name="stateName['+ state_arr[x] +']" id="" value="'+ state_arr[x] +'" >' + state_arr[x] + '</label');
So the name of the input
is a array
it self, which give me values like this
stateName[cityname1];
stateName[cityname2];
stateName[cityname3];
stateName[cityname4];
and so on. So someone tell me wether i am using right way to get these data or make correct query
or not. Thanks
I am using my custom filter. So in this search there are many checkboxes (have city name) and user selected some of them the post show the search result base on the checkbox.
First i sotre the city/state name by using the add_post_meta
add_post_meta($post_id, 'post_state' , $state, true);
So after that when user filter the post. i am using the code
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'sortbydestination' ) :
$stateName = $_POST['stateName'];
unset($_POST);
endif;
$args = array(
'posts_per_page' => 30,
'paged' => $paged,
'post_type' => 'post',
'post_status' => 'publish',
'meta_query' => array(
'key' => 'post_state',
'value' => array($stateName)
)
);
The checkbox html is generated by jquery which is
jQuery('#state_div').append('<label><input type="checkbox" name="stateName['+ state_arr[x] +']" id="" value="'+ state_arr[x] +'" >' + state_arr[x] + '</label');
So the name of the input
is a array
it self, which give me values like this
stateName[cityname1];
stateName[cityname2];
stateName[cityname3];
stateName[cityname4];
and so on. So someone tell me wether i am using right way to get these data or make correct query
or not. Thanks
1 Answer
Reset to default 0Thats because you got the meta_query wrong. Check documentation in Codex
Your query should be:
$args = array(
'posts_per_page' => 30,
'paged' => $paged,
'post_type' => 'post',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'post_state',
'value' => $stateName,
'compare' => '=' // not necesary by default is "="
)
)
);
Basically you need to pass inside the meta_query array, another array with the key and value. Also $stateName should be a var.
=
, yet you feed the metaquery an array as a value. That cannot work. Simply pass$stateName
as a value. – Johannes P. Commented Mar 27, 2013 at 12:34'compare' => '='
but it not working. It show me all the posts. so what can i do now – Adi Commented Mar 27, 2013 at 12:42