[Thủ thuật WordPress] Hướng dẫn cách tìm kiếm chính xác tiêu đề hoặc nội dung trong WordPress – Nếu bạn thường xuyên sử dụng tính năng tìm kiếm của WordPress thì bạn sẽ sớm nhận ra rằng công cụ tìm kiếm của WordPress quá ư là “Cùi chuối” bởi lẽ khi bạn gõ một cụm từ tìm kiếm nào đó thì WordPress sẽ tự động tìm kiếm tất cả những gì có trong dữ liệu liên quan đến từ khóa và hiển thị chúng, việc hiển thị các thông tin  không theo một chuẩn mực nào cả mà nó hiển thị một cách ngẫu nhiên điều này làm cho loãn thông tin khi người dùng sử dụng tính năng tìm kiếm.

Nếu bạn cảm thấy không yêu thích tính năng tìm kiếm của WordPress bạn muốn thay đổi cách tìm kiếm? bạn muốn kết quả xuất hiện tập trung vào một yêu cầu, nội dung sao đó mà kết quả bạn cần nhận được? trong bài viết này mình sẽ hướng dẫn các bạn cách tùy biến công cụ tìm kiếm WordPress để có thể tìm kiếm dựa theo tiêu đề và nội dung hoặc tìm kiếm từ khóa trong tiêu đề.

Tìm kiếm chính xác tiêu đề hoặc nội dung trong WordPress

#1 Tìm kiếm chính xác trong nội dung và tiêu đề

Khi sử dụng tính năng tìm kiếm này kết quả hiển thị sẽ được theo theo tiêu đề và nội dung có từ khóa liên quan cần tìm kiếm.

Đầu tiên bạn hãy truy cập vào tập tin functions.php của giao diện đang sử dụng sau đó Copy đoạn mã bên dưới và dán vào cuối tập tin là được.

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

Sau đó lưu lại tập tin và thử tìm kiếm từ khóa nào đó xem sao bạn sẽ thấy kết quả tìm kiếm được lượt bỏ đáng kể.

#2 Tìm kiếm chính xác tiêu đề

Tương tự khi sử dụng tính năng tìm kiếm này kết quả hiển thị sẽ được theo theo tiêu đề có từ khóa liên quan cần tìm kiếm.

Đầu tiên bạn cũng truy cập vào tập tin functions.php của giao diện đang sử dụng sau đó Copy đoạn mã bên dưới và dán vào cuối tập tin là được.

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

Sau đó lưu lại tập tin và thử tìm kiếm từ khóa nào đó xem sao bạn sẽ thấy kết quả được lượt bỏ đáng kể. Quá đơn giản để bạn có thể tìm kiếm chính xác tiêu đề hoặc nội dung trong WordPress phải không?

Chú ý: Nếu tập tin functions.php không phải là tập tin của giao diện con (Child theme) thì mỗi lần giao diện được cập nhật mới bạn bạn thực hiện lại các thao tác trên một lần nữa. Nếu bạn có giao diện con thì bạn không cần phải thực hiện lại các thao tác trên.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

All in one