从WP_QUERY调用TAX_QUERY时,是否可以对一项使用OR关系,其余项使用AND?

时间:2013-10-23 作者:user130888

我正在尝试优化wordpress模板中的搜索。基本上,我想使用multiselect with。我使用数组存储所选选项,如下所示:location[]=term1&;位置[]=term2等。这是搜索代码的外观:

    $form_location = $_GET[\'location\'];

    if ($form_location != "")
    $form_location = array(
        \'taxonomy\' => \'location\',
        \'field\' => \'slug\',
        \'terms\' => $form_location
    ); 

    // Final Query
    $items_args = array(
        \'post_type\' => \'listings\',
        \'meta_query\' => array(
            $form_price,
            $form_area_range,
            $rentbuy
        ),
        \'tax_query\' => array(
            \'relation\' => \'AND\',
            $form_location,
            $form_property_type,
            $form_rating,
            $form_bed,
            $form_bath
        )
    );
    ?>
    <?php $items_args = new WP_Query($items_args); if ( $items_args->have_posts() ) : 
。。。

我修改了$location来处理数组。我没有完全正确地完成循环,因为我不确定如何处理tax\\u查询。这就是我所做的。我添加了foreach:

        foreach ($form_location as $loc2) {
        $form_location = array(
            \'taxonomy\' => \'location\',
            \'field\' => \'slug\',
            \'terms\' => $loc2
        ); }
这是我缓存的输出:

WP_Query Object ( [query_vars] => Array ( [post_type] => listings [meta_query] => Array ( [0] => [1] => [2] => Array ( [key] => rentbuy [value] => rent ) ) [tax_query] => Array ( [relation] => AND [0] => Array ( [taxonomy] => location [field] => slug [terms] => term1 ) [1] => [2] => [3] => [4] => )...
问题是,我希望将位置分类法用于查询,使用或条件查询它从数组中获得的每个项,以及使用和查询tax\\u中的其他项。这有可能吗?怎么可能?谷歌今晚并不友好。

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

不,这在默认情况下是不可能的。您最好的选择是posts_clauses 滤器网站上的答案provide plenty examples 为了那个过滤器。您可能还需要考虑使用posts_search 滤器

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post