查询必须存在于两个类别之一和另一个类别中的帖子

时间:2016-11-23 10:56:22

标签: php wordpress

我们正在为Wordpress安装编写自定义搜索功能。设置有点复杂,但这是一个剥离的用例。

我们想要做的是搜索所有帖子:

a)存在 类别:[ 203, 204 ]
b)2中的必须存在

最初,我认为我们可以将category__orcategory__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)

1 个答案:

答案 0 :(得分:1)

当我必须处理复杂的分类法查询时,我总是更喜欢tax_query而不是处理混淆的category__incategory__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 );