Iâm researching a bit WP_Query and me a problem has arisen.
I have custom fields in tickets and would like to make a WP_Query showing this (put an example):
(field1 = âdata1â³ AND field2 = âdata2â³) OR (field1 = âdata2â³ AND field2 = âdata1â³)
To do this I created this query but it returns me well.
'meta_query' => array (
'relation' => 'AND',
array (
'key' => 'field1',
'value' => 'data1',
'compare' => '='
),
array (
'key' => 'field2',
'value' => 'data2',
'compare' => '='
),
'relation' => 'OR',
array (
'relation' => 'AND',
array (
array (
'key' => 'field1',
'value' => 'data2',
'compare' => '='
),
array (
'key' => 'field2',
'value' => 'data1',
'compare' => '='
),
),
),
)
Does anyone know what I’m wrong? I tried different ways but nothing (I put this because it is what I think is the one that comes closest.
Greetings and thanks!
PD: Sorry for my english! (Google Translate)
Unfortunately, meta queries do not support a combination of
AND
&OR
. But what you can do, is make two queries, one for each rule, then combine the results.Use the
posts_clauses
filter for that. Just alter the array parts in there to what you need.You could still do this within a WP_Query delcaration. Use the
compare
value ofIN
and pass the value an array of possible values.This would also however, return the possibilities of
(field1='data1' and field1='data1') or (field1='data2' and field1='data2)'
, so perhaps this isn’t ideal. I’m not sure if that doesn’t meet your requirements.