Giới hạn tìm kiếm chỉ trong tiêu đề của bài viết WordPress

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.

Giới hạn tìm kiếm chỉ trong tiêu đề của bài viết 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!

Bình luận


2 bình luận
  • Thảo Nguyên

    18/08/2018 lúc 13:30

    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 13:32

      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.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...