我正在研究一个WP\\U查询,我发现了一个问题。
我在tickets中有自定义字段,希望进行一个WP\\u查询来显示这一点(举个例子):
(field1 = “data1″ AND field2 = “data2″) OR (field1 = “data2″ AND field2 = “data1″)
为此,我创建了这个查询,但它返回的结果很好。
\'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\' => \'=\'
),
),
),
)
有人知道我错了吗?我尝试了不同的方法,但什么都没有(我之所以这样说,是因为我认为这是最接近的方法。
问候和感谢!
对不起我的英语!(谷歌翻译)
最合适的回答,由SO网友:TheDeadMedic 整理而成
不幸的是,元查询不支持AND
&;OR
. 但是您可以做的是进行两个查询,每个规则一个查询,然后合并结果。
$group_1 = get_posts(
array(
\'posts_per_page\' => -1,
\'fields\' => \'ids\',
\'meta_query\' => array (
array (
\'key\' => \'field1\',
\'value\' => \'data1\',
),
array (
\'key\' => \'field2\',
\'value\' => \'data2\',
),
),
)
);
$group_2 = get_posts(
array(
\'posts_per_page\' => -1,
\'fields\' => \'ids\',
\'meta_query\' => array (
array (
\'key\' => \'field1\',
\'value\' => \'data2\',
),
array (
\'key\' => \'field2\',
\'value\' => \'data1\',
),
),
)
);
$query = new WP_Query(
array(
\'post__in\' => array_merge( $group_1, $group_2 ),
)
);
SO网友:Eric Holmes
您仍然可以在WP\\u查询delcaration中执行此操作。使用compare
的值IN
并向该值传递一个可能值的数组。
$my_query = new WP_Query( array(
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'field1\',
\'value\' => array(\'data1\', data2\'),
\'compare\' => \'IN\'
),
array(
\'key\' => \'field2\',
\'value\' => array(\'data1\', data2\'),
\'compare\' => \'IN\'
),
) );
然而,这也将返回
(field1=\'data1\' and field1=\'data1\') or (field1=\'data2\' and field1=\'data2)\'
, 所以这可能并不理想。我不确定这是否符合你的要求。