2017-04-10 119 views
1
  • 我需要自定義單詞按基本搜索過濾器。
  • 在發佈標題和發佈內容中,它可以很好地搜索關鍵字。
  • 現在我需要顯示結果,如果用戶輸入與 類別名稱匹配的名稱,那麼它應該將該類別的結果以及 作爲其他結果。
  • 我假設,它應該是類似於使用 LIKE子句爲category_name或category_in運算符在稅收 查詢。如何在wordpress中使用LIKE搜索類別名稱的帖子?

     
    
    
    $args = get_posts(array(
          'fields' => 'ids', 
          'post_type' => 'post', 
          'post_status' => 'publish', 
          'posts_per_page' => -1, 
          's' => $_REQUEST['s'] ? $_REQUEST['s'] : '' , 
          'tax_query' => array(
           array(
           'taxonomy' => 'NAME OF TAXONOMY', 
           'field' => 'slug', 
           'terms' => 'SLUG OF the TERM', // LIKE (here should be any LIKE clause etc) 
           ), 
          ) 
         )); 
    

    如何實現這種情況下,意味着當用戶輸入相匹配的類別名稱應該把所有從該類別中的結果與一般搜索結果一起任何關鍵字。

例:在搜索欄的用戶寫道:「ABC」並且有可用名稱爲「ABC公園」,那麼就應該拉離這一類具有帖子的標題和結果一起的結果類別包含「ABC」的內容。

+0

http://wordpress.stackexchange.com/a/18715 –

+0

http://wordpress.stackexchange.com/a/173752 –

+0

@AlivetoDie這些鏈接不是關於從類別名稱搜索類似搜索術語。也請看看編輯過的問題。謝謝。 –

回答

1

好的...我想出了一個解決方案,我用LIKE查詢從表terms中提取了所有的類別ID,然後在其他查詢中傳遞了這個數組作爲類別參數。這是代碼。

$term_ids=array(); 
     $cat_Args="SELECT * FROM $wpdb->terms WHERE name LIKE '%".$_REQUEST['s']."%' "; 
     $cats = $wpdb->get_results($cat_Args, OBJECT); 
     array_push($term_ids,$cats[0]->term_id);  



$q1 = get_posts(array(
     'fields' => 'ids', 
     'post_type' => 'post', 
     'post_status' => 'publish', 
     'posts_per_page' => -1, 
     's' => $_REQUEST['s'] ? $_REQUEST['s'] : '' 

)); 
$q2 = get_posts(array(
     'fields' => 'ids', 
     'post_type' => 'post', 
     'post_status' => 'publish', 
     'posts_per_page' => -1, 
     'category' =>$term_ids 
)); 
$unique = array_unique(array_merge($q1, $q2)); 

$posts = get_posts(array(
    'post_type' => 'post', 
    'post__in' => $unique, 
    'posts_per_page' => -1 
)); 
    if ($posts) : 

foreach($posts as $post) : 
//show results 
endforeach; 
endif; 

但仍然我想要一個更簡單和更精確的方法。 :)

相關問題