Tip hướng dẫn làm sao debug câu SQL trong Wordpress

1st Sep 2021
Table of contents

Hôm nay mình sẽ chia sẽ với anh chị “Tùy biến tìm kiếm Wordpress theo tiêu đề (custom search by title only wordpress)”. Việc tìm kiếm từ khóa theo title sẽ làm cho kết quả tìm kiếm tốt hơn. Mời anh chị theo dõi,

Code minh họa bên dưới

function search_by_title_only($search, &$query){
    global $wpdb;
    if(empty($search)) {
        return $search;
    }
    $q = $query->query_vars;
    //var_dump($query);
    $n = !empty($q['exact']) ? '' : '%';
    $search =
    $and = '';
    foreach ((array)$q['search_terms'] as $term) {
        $term = esc_sql($wpdb->esc_like($term));
        $search .= "{$and}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
        $and = ' AND ';
    }
    if (!empty($search)) {
        $search = " AND ({$search}) ";
    }
    //var_dump($wp_query);
    //var_dump($wp_query);
    return $search;
}
add_filter('posts_search', 'search_by_title_only', 999, 2);

Code minh họa thứ 2 tìm kiếm field post_password

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( like_escape( $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 );

Đây là cách show câu SQL trong Wordpress

//add_filter( 'posts_request', 'var_dump_request' );
function var_dump_request($sql) {
    var_dump($sql);
    return $sql;
}
Bạn thấy bài viết này như thế nào?
0 reactions

Add new comment

Image CAPTCHA
Enter the characters shown in the image.
Câu nói tâm đắc: “Điều tuyệt với nhất trong cuộc sống là làm được những việc mà người khác tin là không thể!”

Related Articles

Nếu bạn muốn liệt kê tất cả các danh mục có sẵn cho một loại bài đăng tùy chỉnh, đoạn mã này có thể giúp bạn.

WP_Query là một lớp mạnh mẽ và cung cấp nhiều bộ lọc và hành động mà bạn có thể sử dụng để thay đổi cách vòng lặp WordPress hiển thị dữ liệu và cách truy vấn truy xuất dữ liệu.

If you want to build a simple, similar post list – in a single page view – when you query the latest or random posts from a post type you can use WP_Query.