1

我在这个问题上搜索了很多,但找不到任何结论性的东西。也许有人可以在这里帮助我!

我有自定义帖子类型“地点”和两个自定义分类法“地点区域”和“地点类别”。我正在通过这两个分类法构建一个下拉过滤器。如果过滤器为空并且选择了两个分类法,那么一切都很好。但是,如果其中一种分类法具有价值而另一种分类法为空,我无法弄清楚如何使其工作。

这是我的查询:

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 );

我认为空值将意味着所有分类术语,但似乎它正在寻找一个不存在的术语并返回空结果。

如果术语值为空,有什么想法可以从查询中排除分类?

4

1 回答 1

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在这种情况下,如果它们不为空,我们只会将它们添加到参数中。

于 2012-10-23T13:18:42.933 回答