支持多分类的高级查询逻辑

时间:2014-04-07 作者:Eckstein

我的网站上有一个页面,用作搜索工具/搜索结果页面,供用户查找租赁空间。左侧是一列复选框,用户可以通过三个单独的自定义分类法过滤结果(space-types, space-features, space-areas) 页面右侧列出了提交复选框表单后的结果。

我正在尝试正确查询空格(自定义帖子类型space-listings) 基于每个分类法中所选的术语,但逻辑似乎不可能,我不知道其他方法如何实现。

这是所需的逻辑:如果空间列表中有space-types 以及所有space-features 用户已选择并具有space-areas 他们已经选择的。

以下是我使用查询数组得到的最接近的结果:

$searchspace = array (
\'post_type\'=>\'space_listing\',
\'posts_per_page\'=> 3,
\'paged\' => $paged,
\'tax_query\'=> array (
    \'relation\' => \'AND\',
    array (
        \'taxonomy\' => \'space-types\',
        \'field\' => \'slug\',
        \'terms\' => $searchedtypes, //Array of selected types
                    \'operator\' => \'IN\'//default
        ),
    array (
        \'taxonomy\' => \'space-features\',
        \'field\' => \'slug\',
        \'terms\' => $searchedfeatures, //Array of selected features
                    \'operator\' => \'AND\'
        ),
            array (
                    \'taxonomy\' => \'space-areas\',
        \'field\' => \'slug\',
        \'terms\' => $searchedareas, //Array of selected areas
                    \'operator\' => \'IN\'//default
        ),
    )

);

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

看见Taxonomy Parameters 在法典中。

首先,您的tax_query

第二,你可能需要利用operator 查询中的参数(内部参数)。我不确定,如果没有测试,但是AND 似乎比默认匹配更严格IN 对于您的强制类型/功能逻辑。

结束

相关推荐

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

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

支持多分类的高级查询逻辑 - 小码农CODE - 行之有效找到问题解决它

支持多分类的高级查询逻辑

时间:2014-04-07 作者:Eckstein

我的网站上有一个页面,用作搜索工具/搜索结果页面,供用户查找租赁空间。左侧是一列复选框,用户可以通过三个单独的自定义分类法过滤结果(space-types, space-features, space-areas) 页面右侧列出了提交复选框表单后的结果。

我正在尝试正确查询空格(自定义帖子类型space-listings) 基于每个分类法中所选的术语,但逻辑似乎不可能,我不知道其他方法如何实现。

这是所需的逻辑:如果空间列表中有space-types 以及所有space-features 用户已选择并具有space-areas 他们已经选择的。

以下是我使用查询数组得到的最接近的结果:

$searchspace = array (
\'post_type\'=>\'space_listing\',
\'posts_per_page\'=> 3,
\'paged\' => $paged,
\'tax_query\'=> array (
    \'relation\' => \'AND\',
    array (
        \'taxonomy\' => \'space-types\',
        \'field\' => \'slug\',
        \'terms\' => $searchedtypes, //Array of selected types
                    \'operator\' => \'IN\'//default
        ),
    array (
        \'taxonomy\' => \'space-features\',
        \'field\' => \'slug\',
        \'terms\' => $searchedfeatures, //Array of selected features
                    \'operator\' => \'AND\'
        ),
            array (
                    \'taxonomy\' => \'space-areas\',
        \'field\' => \'slug\',
        \'terms\' => $searchedareas, //Array of selected areas
                    \'operator\' => \'IN\'//default
        ),
    )

);

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

看见Taxonomy Parameters 在法典中。

首先,您的tax_query

第二,你可能需要利用operator 查询中的参数(内部参数)。我不确定,如果没有测试,但是AND 似乎比默认匹配更严格IN 对于您的强制类型/功能逻辑。

相关推荐

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

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