Mặc định khi bạn gõ từ khóa tìm kiếm thì WordPress sẽ đưa ra kết quả có liên quan, bao gồm tìm theo tiêu đề bài viết, tìm từ sử dụng trong nội dung bài viết cũng như chuyên mục và thẻ có liên quan. Bài viết này mình sẽ hướng dẫn cho các bạn cách giới hạn kết quả tìm kiếm chỉ tìm theo tiêu đề của bài viết trên WordPress.
Cách giới hạn tìm kiếm chỉ trong tiêu đề của bài viết WordPress rất đơn giản, bạn chỉ cần mở tập tin functions.php
thêm đoạn code sau:
/*
* Search only by title
*/
function wpse_11826_search_by_title($search, $wp_query) {
if (! empty($search) && ! empty($wp_query->query_vars['search_terms'])) {
global $wpdb;
$q = $wp_query->query_vars;
$n = ! empty($q['exact']) ? '' : '%';
$search = array();
foreach ((array) $q['search_terms'] as $term)
$search[] = $wpdb->prepare("$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like($term) . $n);
if (! is_user_logged_in())
$search[] = "$wpdb->posts.post_password = ''";
$search = ' AND ' . implode(' AND ', $search);
}
return $search;
}
add_filter('posts_search', 'wpse_11826_search_by_title', 10, 2);
Đoạn code bên trên sẽ áp dụng cho tất cả các query tìm kiếm trên blog, nếu bạn muốn giới hạn cho một query nhất định nào đấy thì bạn chỉ cần thêm thuộc tính vào trong query_vars
và sau đó kiểm tra lại cho trùng khớp là được. Chúc các bạn thành công!
Thảo Nguyên
18/08/2018 lúc 1:30 chiều
a cho e hỏi sao e dùng code này nó cứ bị ra cảnh báo như này ạ :
Warning: Parameter 2 to search_by_title_only() expected to be a reference, value given in C:xampphtdocsthaonguyenwp-includesclass-wp-hook.php on line 286
Admin
18/08/2018 lúc 1:32 chiều
Mình vẫn để code này trong các trang của mình và không có lỗi gì cả…
Mà cái này chỉ là Warning, thường một trang khi chạy sẽ không hiện Warning ra, bạn có thể tắt ở php.ini mục error_reporting.