將 WordPress 關鍵字搜尋,預設為”文章標題”搜尋

前言

WordPress 其實是有全站式的關鍵字搜尋,可以讓前台使用者擁有關鍵字搜尋的方式搜尋想要查看的東西。
而如果你有搭配 Jet Smart Filter 這套外掛,會更好用,當然有些人會使用 Google 自訂搜尋 來取代 WordPress 預設的站內搜尋 也是一種方法。
但如果你還是希望能夠直接使用 WordPress 的站內搜尋,它則會包含搜尋到文章的內容任何關鍵字,而不是單純以標題搜尋。
以下就要教你如何直接將預設搜尋改為使用標題搜尋。

教學

將以下的語法,置入在functions.php內:

// 只讓搜尋允許標題搜尋
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($wpdb->esc_like($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 = '') , AND ($wpdb->posts.post_type = 'profile') ";

}
return $search;
}
add_filter('posts_search', '__search_by_title_only', 500, 2);

這樣就大功告成囉!

相關文章