wordpress - 我怎样才能获得具有多个动态分类法的帖子
问题描述
我正在使用 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);
但它只显示从一个分类而不是两者过滤的结果。
解决方案
我认为您正在朝着正确的方向努力,但是争论中的一个小错误可能会导致结果被渲染错误。而不是'relation'=>'AND'
,使用'relation'=>'OR'
'relation'=>'AND'
当两个分类条件匹配时将获取结果,而'relation'=>'OR'
条件将与任何分类进行比较。
实际上你的阵列形成是错误的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 );
推荐阅读
- office365 - 如何在没有 Microsoft Store 的情况下下载 Microsoft Whiteboard?
- blazor - 适用于 3.2.0-preview2.20160.5 的 Blazor Wasm 组件库
- java - 尝试搜索数组列表时类型不匹配
- python - 通过比较 Python 中其他数组的数据来创建新数组
- java - JPA 中的 Bean 验证 API
- javascript - 在特定索引处添加数组项 - React Redux
- python - 预期 LP_LP_c_longlong 实例而不是指向 LP_c_longlong 的指针
- vue.js - 如何动态更新bootstrap-vue.js js表数据
- apache-beam-io - 使用 apache 2.19 的 bigquery 数据流上的 IllegalAccessError
- outlook-web-addins - Outlook web-addin 使用已注册的方案打开外部应用程序