Giới hạn tìm kiếm theo tiêu đề bài viết

Cập nhật lần cuối vào

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.

Tìm kiếm WordPress

Cách làm rất đơn giản, bạn chỉ cần mở tập tin functions.php của giao diện lên hoặc bất kỳ chỗ nào có thể chạy được hàm PHP trên trang WordPress của bạn (trong plugin hoặc giao diện) đều được, bạn thêm vào đoạn code bên dưới:

function hocwp_theme_custom_limit_search_title_only($search, &$wp_query) {
    global $wpdb;
    if(empty($search)) {
        return $search;
    }
    $q = $wp_query->query_vars;
    $n = !empty($q['exact']) ? '' : '%';
    $search = '';
    $searchand = '';
    $terms = (array)$q['search_terms'];
    foreach($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', 'hocwp_theme_custom_limit_search_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 1 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 bạn thành công.