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 làm 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 search_by_title_only($search, &$wp_query)
{
    global $wpdb;
    if(empty($search)) {
        return $search; // skip processing - no search term in query
    }
    $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 LIKE '{$n}{$term}{$n}')";
        $searchand = ' AND ';
    }
    if (!empty($search)) {
        $search = " AND ({$search}) ";
        if (!is_user_logged_in())
            $search .= " AND ($wpdb->posts.post_password = '') ";
    }
    return $search;
}
add_filter('posts_search', 'search_by_title_only', 500, 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!