Công cụ tìm kiếm của WordPress hơi cùi bắp, tìm kiếm không chính xác cho lắm,
Dưới đây là cách thiết lập để công cụ tìm kiếm của WordPress chính xác hơn.
1 – Tìm kiếm chính xác trong tiêu đề và nội dung
Các bạn, hãy mở file functions.php của theme đang sử dụng và thêm vào đó đoạn code sau:
add_filter('posts_search', 'pvs_search_is_exact', 20, 2); function pvs_search_is_exact($search, $wp_query){ global $wpdb; if(empty($search)) return $search; $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}[[:>:]]') OR ($wpdb->posts.post_content REGEXP '[[:<:]]{$term}[[:>:]]')"; $searchand = ' AND '; endforeach; if(!empty($search)) : $search = " AND ({$search}) "; if(!is_user_logged_in()) $search .= " AND ($wpdb->posts.post_password = '') "; endif; return $search; }
2 – Tìm kiếm chính xác chỉ trong tiêu đề
add_filter('posts_search', 'pvs_search_is_exact', 20, 2); function pvs_search_is_exact($search, $wp_query){ global $wpdb; if(empty($search)) return $search; $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 '; endforeach; if(!empty($search)) : $search = " AND ({$search}) "; if(!is_user_logged_in()) $search .= " AND ($wpdb->posts.post_password = '') "; endif; return $search; }