meta_query with value = any value
-
Hello,
When you have a meta_query as follows:$meta_query_args = array( 'relation' => 'OR', // Optional, defaults to "AND" array( 'key' => '_my_custom_key', 'value' => 'Value I am looking for', 'compare' => '=' ), array( 'relation' => 'AND', array( 'key' => '_my_custom_key_2', 'value' => 'Value I am looking for 2', 'compare' => '=' ), array( 'key' => '_my_custom_key_3', 'value' => 'Value I am looking for 3', 'compare' => '=' ) ) ); $meta_query = new WP_Meta_Query( $meta_query_args );How to get ‘any value’ instead of ‘Value I am looking for’?
I use a more complicated meta_query that doesn’t give a result now for ‘any value’, neither for value = ”, value = false or value = none. The query is only executed for fixed values.
Please, how to solve this? Thanks.
-
according to the Codex https://codex.ww.wp.xz.cn/Class_Reference/WP_Query#Custom_Field_Parameters:
compare (string) – Operator to test. Possible values are ‘=’, ‘!=’, ‘>’, ‘>=’, ‘<‘, ‘<=’, ‘LIKE’, ‘NOT LIKE’, ‘IN’, ‘NOT IN’, ‘BETWEEN’, ‘NOT BETWEEN’, ‘EXISTS’ and ‘NOT EXISTS’. Default value is ‘=’.
try to work with:
'meta_compare' => 'EXISTS'Hello,
Changed as follows:
$args = array( 'post_type' => 'property', 'meta_compare' => 'EXISTS', 'meta_query' => array( array( 'key' => 'country', 'value' => $country, 'compare' => '=' ), array( 'key' => 'city', 'value' => $city, 'compare' => 'LIKE' ), array( 'key' => 'what', 'value' => $what, 'compare' => 'LIKE' ), ...it works for keys “city” and “what” that have each a number of different values. But it doesn’t work for “country” that has only one value. Is this normal or is the code not right?
remove this line again:
'meta_compare' => 'EXISTS',and try to use it like:
array( 'key' => 'country', 'compare' => 'EXISTS' ),Hello,
Following code works:
$args = array( 'post_type' => 'property', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => 'country', 'compare' => 'EXISTS' ), array( 'key' => 'city', 'compare' => 'EXISTS' ), array( 'key' => 'what', 'compare' => 'EXISTS' ), array( 'key' => 'country', 'value' => $country, 'compare' => 'LIKE' ), array( 'key' => 'city', 'value' => $city, 'compare' => 'LIKE' ), array( 'key' => 'what', 'value' => $what, 'compare' => 'LIKE' ), ...although you can also exclude next two:
array( 'key' => 'city', 'compare' => 'EXISTS' ), array( 'key' => 'what', 'compare' => 'EXISTS' ),As you see in next line I changed the ‘=’ for ‘LIKE’:
array( 'key' => 'country', 'compare' => 'EXISTS' ),Afterwards, I see that your second proposal for the code wasn’t needed as the first code works as good as the second method when ‘=’ is replaced by ‘LIKE’.
Thanks for these suggestions. Now another question. Can you also tell me how to limit the number of excerpts displayed in these search results? First, I work with another post type than usual and they are also displayed with an include in a page template. The common pagination code doesn’t work. This means that now for every search I get the whole list of results on one page, depending on how many posts I indicate in “settings > reading” to display.
The topic ‘meta_query with value = any value’ is closed to new replies.