• Lam's Notes
  • Posts
  • WordPress và cơn ác mộng tìm kiếm “na ná giống giống”

WordPress và cơn ác mộng tìm kiếm “na ná giống giống”

Anh em lập trình viên WordPress, đồng bào đã từng vò đầu bứt tóc vì hệ thống search “đáng yêu” của em nó, tụ họp về đây! Hôm nay, chúng ta sẽ cùng nhau “hô biến” WordPress từ một kẻ mù đường tìm kiếm thành một tay săn tin cự phách, chính xác đến từng milimet!

Chuyện là thế này, ông anh WordPress nhà ta vốn nổi tiếng dễ tính, cái gì cũng “Ừa, được!”, “Okay, fine!”. Gõ đại cái gì vào ô tìm kiếm, WordPress cũng gật đầu lia lịa rồi quăng ra một mớ kết quả “na ná giống giống”, kiểu như bạn tìm “bí kíp võ công”, nó lại hiển thị “cách làm bánh bí đỏ” vậy! 😩

Nhưng anh em yên tâm, với dòng code “thần thánh” dưới đây, chúng ta sẽ trị tận gốc căn bệnh “mù đường” của WordPress:

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($wpdb->esc_like($term));
       $search.= "{$searchand}($wpdb->posts.post_title REGEXP '[[::]]') OR ($wpdb->posts.post_content REGEXP '[[::]]')";
       $searchand = ' AND ';
   endforeach;
   if(!empty($search)) :
       $search = " AND ({$search}) ";
       if(!is_user_logged_in())
           $search .= " AND ($wpdb->posts.post_password = '') ";
   endif;
   return $search;
}

Đoạn code “nhỏ mà có võ” này sẽ giúp WordPress tập trung cao độ vào từng chữ cái mà người dùng nhập vào. Không còn chuyện “na ná”, không còn chuyện “giống giống”, từ giờ, WordPress sẽ chỉ hiển thị kết quả chính xác 100% với từ khóa được tìm kiếm.

Thử tưởng tượng xem, người dùng sẽ “sướng rơn” như thế nào khi tìm kiếm thông tin trên website của bạn một cách dễ dàng và chính xác. Tỉ lệ thoát trang giảm, thời gian onsite tăng, Google cũng vì thế mà “ưu ái” website của bạn hơn.

Còn chờ gì nữa mà không áp dụng ngay “bí kíp” này vào website WordPress của bạn? Chúc anh em thành công! 😉

Reply

or to participate.