2015-08-27 42 views
1

我想創建一個文本查詢。如果類別具有相同的父項而不是添加關係或其他方式與。請看下面的截圖,這樣你就可以對此有更多的瞭解。基於用戶選擇並顯示搜索結果,我使用pre_get_posts操作來綁定此查詢。下面的代碼添加了所有類別的AND關係。如何在wordpress中創建texT查詢

function advanced_search_query($query) { 

if($query->is_search()) { 
$taxes = $_REQUEST['cat_project_category']; 
    $tax_query = array( 
         'relation' => 'AND'); 
     for($i=0;$i < count($_REQUEST['cat_project_category']);$i++) 
     { 
      $tax_query[] = array(
          'taxonomy' => 'project_category', 
          'terms' => array($_REQUEST['cat_project_category'][$i]), 
          'field' => 'term_id' 
         ); 
     } 
    $query->set('tax_query',$tax_query); 
    //echo '<pre>'; 
    //print_r($query); 
    return $query; 
} 
} 
add_action('pre_get_posts', 'advanced_search_query', 1000); 

回答

0

您可以查詢每個類別,獲取父ID,將它們放入數組,然後查看該數組是否只有一個值。

$taxes = $_REQUEST['cat_project_category']; 
$tax_query = array(); 
$parents_categories = array(); 
for($i=0;$i < count($_REQUEST['cat_project_category']);$i++) { 
    $tax_query[] = array(
     'taxonomy' => 'project_category', 
     'terms' => array($_REQUEST['cat_project_category'][$i]), 
     'field' => 'term_id' 
    ); 
    $category = get_category($_REQUEST['cat_project_category'][$i]), 
    if($category != 0) 
    $parents_categories[$category] = true; 
} 
if(count($parents_categories) == 1) { 
    $tax_query['relation'] = 'OR'; 
} else{ 
    $tax_query['relation'] = 'AND'; 
} 
$query->set('tax_query',$tax_query); 
+0

感謝您的回覆 –