Thiết lập tìm kiếm chính xác trong WordPress
Tôi thấy nhiều bạn có ý kiến về việc 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.
Nay tôi xin phép viết 1 bài chia sẻ cách thiết lập để công cụ tìm kiếm của WordPress chính xác hơn.
Trong bài này, tôi có 2 phần
- Thiết lập tìm kiếm chính xác (Tìm cả trong tiêu đề và nội dung)
- Thiết lập tìm kiếm chính xác (Chỉ tìm trong tiêu đề)
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à bỏ 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; }
Kết luận
Trên đây là thủ thuật nhỏ dựa trên các dự án thực tế của tôi. Hy vọng nó hữu ích với bạn. Nếu có bất kỳ câu hỏi nào, vui lòng comment dưới bài viết này.
Click to rate this post!
[Total: 8 Average: 2.9]
[…] Nguồn […]
Chú ý: Câu lệnh không đúng cần thay đổi nội dung trong mục 1 – Tìm kiếm chính xác trong tiêu đề và nội dung
Thay đổi thành: Nếu chưa rõ có thể hỏi https://www.facebook.com/lionelphamit
Pic 2