我在这个问题上搜索了很多,但找不到任何有用的东西。也许有人可以帮助我!
我有自定义帖子类型'地点'和两个自定义分类“地点区域”和“地点类别”。我正在通过这两个分类法构建一个下拉过滤器。如果过滤器为空并且两个分类法都被选中,那么一切都很好。但是,如果其中一个分类法具有价值而另一个分类法为空,我无法弄清楚如何使其发挥作用。
这是我的疑问:
if(($category == null) && ($area == null)) {
//Usual query without taxonomy
} else {
$args = array(
'post_type' => 'place',
'tax_query' => array(
array(
'taxonomy' => 'placecat',
'field' => 'slug',
'terms' => $category
),
array(
'taxonomy' => 'placearea',
'field' => 'slug',
'terms' => $area
)
)
);
}
$the_query = new WP_Query( $args );
我认为null值将意味着所有的分类术语,但似乎它正在寻找一个不存在的术语并返回空结果。
如果术语值为null,我可以如何从查询中排除分类法?
答案 0 :(得分:2)
如果您单独检查它们,也可以单独添加它们。
$args['post_type'] = 'place';
if ( $category != null ) {
$args['tax_query'][] = array(
'taxonomy' => 'placecat',
'field' => 'slug',
'terms' => $category
);
}
if ( $area != null ) {
$args['tax_query'][] = array(
'taxonomy' => 'placearea',
'field' => 'slug',
'terms' => $area
);
}
在这种情况下,如果它们不为空,我们只将它们添加到tax_query
参数。