I’ve been stuck on a problem for a while now and I can’t seem to figure it out.
I want to query posts and only display them if their 2 meta values checked contain the ones I have queried.
For example:
If a post had 123 and 321 then I want them to be displayed. But if it had 123 and 123 then it shouldn’t be displayed and vice versa.
I have been looking at this code and I cant figure it out:
array(
'key' => 'featured',
'value' => 'yes',
'compare' => 'NOT NULL',
),
array(
'key' => 'type',
'value' => 'event',
'compare' => 'NOT NULL',
)
So just to clarify:
- if
featured
value is “yes” ANDtype
value is “event” => it should
be displayed
but
- if
featured
value is “yes” ANDtype
value is “party” => it
shouldn’t be displayed.
Sorry if this doesnt make sense.
Thanks, Dazeh.
I believe what you are looking for is the
relation
parameter inmeta_query
. I’m assuming you are using theWP_Query
class to make the call given your syntax in the example. You might want to ensure that no other plugins are forcing the relation parameter to be “OR” instead of the default “AND” by hooking intopre_get_posts
.The first step would be to evaluate the
meta_query
=>relation
value in yourwp_query
result.‘compare’ should be ‘=’ because you are comparing exact values, also ‘relation’ have to ‘AND’. Both should be default, but better to be sure