首页 > 解决方案 > 我怎样才能获得具有多个动态分类法的帖子

问题描述

我正在使用 ajax 过滤自定义帖子类型。我可以使用单一分类法进行过滤,但如何使用多种分类法过滤结果。

这是我尝试过的查询:

代码:

$args=array('orderby'=>'date','post_status'=>'publish');

//sort by bank if isset
if(isset($_POST['bank']))
{
    $args['tax_query']=array(
        array(
                'taxonomy'=>'banks',
                'field'=>'id',
                'terms'=>$_POST['bank']
        )
    );
}
if(isset($_POST['card_type']))
{
    $args['tax_query']=array(
        'relation'=>'AND',
        array(
                'taxonomy'=>'cardtype',
                'field'=>'id',
                'terms'=>$_POST['card_type']
        )
    );
}
$query=new WP_Query($args);

但它只显示从一个分类而不是两者过滤的结果。

标签: wordpress

解决方案


我认为您正在朝着正确的方向努力,但是争论中的一个小错误可能会导致结果被渲染错误。而不是'relation'=>'AND',使用'relation'=>'OR'

'relation'=>'AND'当两个分类条件匹配时将获取结果,而'relation'=>'OR'条件将与任何分类进行比较。

单击此处查看 WP 查询参数

实际上你的阵列形成是错误的tax_query。请检查下面的更新代码。如果您不使用$args['tax_query']['relation']= 'AND',那么它也对您有用。

请尝试使用以下代码片段。使用以下代码片段更新您的代码。

$args = array(
            'orderby'=>'date',
            'post_status'=>'publish'
        );

//sort by bank if isset
if(isset($_POST['bank'])){
    $args['tax_query'][]= array(
                'taxonomy'=>'banks',
                'field'=>'id',
                'terms'=>$_POST['bank']
                );
}
if(isset($_POST['card_type'])){
    $args['tax_query']['relation']=   'AND';//you can remove this

    $args['tax_query'][]=   array(
                            'taxonomy'=>'cardtype',
                            'field'=>'id',
                            'terms'=>$_POST['card_type']
                    );

}
$the_query = new WP_Query( $args );

推荐阅读