2016-08-04 7 views
0

私は自分のウェブサイトに何千ものwoocommerce製品があり、私のワードプレス検索は非常に遅いです。ワードプレス検索のみタイトル(でも正確ではない)

function __search_by_title_only($search, $wp_query) 
{ 
global $wpdb; 

if (empty($search)) 
return $search; // skip processing - no search term in query 

$q = $wp_query->query_vars; 
$n = ! empty($q['exact']) ? '' : '%'; 

$search = 
$searchand = ''; 

foreach ((array) $q['search_terms'] as $term) { 
$term = esc_sql(like_escape($term)); 

$search .= "{$searchand}($wpdb->posts.post_title REGEXP '[[:<:]]{$term}[[:>:]]')"; 

$searchand = ' AND '; 
} 

if (! empty($search)) { 
$search = " AND ({$search}) "; 
if (! is_user_logged_in()) 
$search .= " AND ($wpdb->posts.post_password = '') "; 
} 

return $search; 
} 

add_filter('posts_search', '__search_by_title_only', 1000, 2); 

しかし、それは大文字/小文字に敏感で正確な単語を検索し、私はそれを望んでいない:私は私の検索をスピードアップするために、タイトルのみの検索をしてきたと私はこれを見つけたことになります。たとえば、名前が「795PA」の商品があり、「795pa」を検索しても結果が返されませんでした。どうすれば修正できますか?アイデア?

+0

検索中にすべてを小文字に変換しようとしましたか? – flomei

+0

提案していただきありがとうございますが、私のポストタイトルの一部は大文字で、小文字のものは使用できません。 – exspet

答えて

0

私は相違を見ることはできませんが、その小さなコードは私の問題を解決しました。

//Limit Search to Post Titles Only 
function ni_search_by_title_only($search, &$wp_query) 
{ 
    global $wpdb; 
    if (empty($search)) 
     return $search; // skip processing - no search term in query 
    $q = $wp_query->query_vars; 
    $n = ! empty($q['exact']) ? '' : '%'; 
    $search = 
    $searchand = ''; 
    foreach ((array) $q['search_terms'] as $term) { 
     $term = esc_sql(like_escape($term)); 
     $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')"; 
     $searchand = ' AND '; 
    } 
    if (! empty($search)) { 
     $search = " AND ({$search}) "; 
     if (! is_user_logged_in()) 
      $search .= " AND ($wpdb->posts.post_password = '') "; 
    } 
    return $search; 
} 
add_filter('posts_search', 'ni_search_by_title_only', 500, 2); 

私はここにリンクを共有することができますかわからないけどnathan ingramはそれを共有する:ここでは修正です。

関連する問題