2014-01-09 109 views
0

試圖做一種「高級搜索」中我發現這個代碼:在展示我的自定義字段的意義自定義搜索和代碼問題

function custom_search_where($pieces) { 

    // filter to select search query 
    if (is_search() && !is_admin()) { 

     global $wpdb; 
     $custom_fields = array('ISBN','Edicion'); 
     $keywords = explode(' ', get_query_var('s')); 
     $query = ""; 
     foreach ($custom_fields as $field) { 
      foreach ($keywords as $word) { 
       $query .= "((mypm1.meta_key = '".$field."')"; 
       $query .= " AND (mypm1.meta_value LIKE '%{$word}%')) OR "; 
      } 
     } 

     if (!empty($query)) { 
      // add to where clause 
      $pieces['where'] = str_replace("(((wp_posts.post_title LIKE '%", "({$query} 

((wp_posts.post_title LIKE '%", $pieces['where']); 

      $pieces['join'] = $pieces['join'] . " INNER JOIN {$wpdb->postmeta} AS mypm1 ON 

({$wpdb->posts}.ID = mypm1.post_id)"; 
     } 
    } 
    return ($pieces); 
} 
add_filter('posts_clauses', 'custom_search_where'); 

工作正常(文字和數字,我需要)並允許我做一個交叉搜索:我做了一個自定義搜索表單,其中的想法是按版本,標題,名稱,數字,內容和章節進行搜索。版本是自定義後類型(正常工作),標題,名稱和編號都是自定義字段(可與此腳本也沒關係),段和COLECCION是分類是通過顯示一個選擇(工作正常)

的問題是: 如果我搜索一個數字(從書中的代碼)顯示的帖子,只有一個,如同正常;但如果我搜索一個詞(書名或名稱),它會顯示很多帖子(10或更多) 我是wordpress和代碼中的新成員,所以我需要一些幫助來解決它:我需要在代碼爲正常顯示我的搜索(顯示只有一個,沒有重複)

我知道是很多代碼出來,我已經測試,但這是一個工作相對很好,我的搜索表單,除複製品。

回答

1

經過一段時間的尋找,今天,我在下一個鏈接中找到了答案(與以前相同的代碼,但爲了避免任何重複,包含在內) 工作正常。

http://pastebin.com/seNZYDSJ

我希望可能是有用的,如果有人有同樣的問題。

+0

非常感謝您提供此解決方案!我有完全相同的問題,現在已經修復:) – Forza