我们正在为Wordpress安装编写自定义搜索功能。设置有点复杂,但这是一个剥离的用例。
我们想要做的是搜索所有帖子:
a)存在 类别:[ 203, 204 ]
b)2
中的必须存在
最初,我认为我们可以将category__or
与category__and
结合使用,但这会产生意外结果(忽略category__not_in
的使用):
Array
(
[category__not_in] => Array
(
[0] => 202
[1] => 205
)
[category__or] => Array
(
[0] => 203
[1] => 204
)
[cateogory__and] => 139
[offset] => 0
[paged] => 1
[posts_per_page] => 20
)
我们如何使用WP_Query()
使用要求查找帖子:
category = (203 && 2) || (204 && 2)
?
答案 0 :(得分:1)
当我必须处理复杂的分类法查询时,我总是更喜欢tax_query
而不是处理混淆的category__in
,category__and
等,即使分类法是默认的分类
<?php
$args = [
'posts_per_page' => 20,
'tax_query' => [
'relation' => 'OR',
[
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => [203, 2],
'operator' => 'AND',
],
[
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => [204, 2],
'operator' => 'AND',
],
],
];
$the_query = new WP_Query( $args );