2012-10-23 82 views
1

我在這個問題上搜索了很多,但找不到任何不合適的東西。也許有人可以幫助我!幾個分類法的WordPress查詢帖

我有自定義帖子類型「地點」和兩個自定義分類法的「地區」和「地點類別」。我正在構建這兩個分類法的下拉過濾器。如果篩選器爲空並且選擇了兩個分類法,那麼所有工作都很好。但是如果其中一個分類標準具有價值而另一個分類標準爲空,我無法弄清楚如何使它工作。

這裏是我的查詢:

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

我認爲空值將意味着所有分類術語,但現在看來似乎在尋找一個不存在的項,並返回空的結果。

任何想法如何可以排除分類從查詢如果期限值爲空?

回答

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參數,如果它們不爲空。

+0

Jrod,剛剛弄明白了。謝謝你,你的解決方案寫得更加優雅! –