Có thể tìm kiếm theo tên tác giả với chức năng tìm kiếm mặc định của WordPress?


7

Tôi nhận thấy việc cải thiện chức năng tìm kiếm của WordPress là một con giun khổng lồ, nhưng điều bổ sung DUY NHẤT tôi cần làm là hiển thị kết quả khi tôi tìm kiếm tên tác giả.

Ví dụ: nếu chúng tôi có một tác giả tên Katie Johnson và tôi tìm kiếm Katie, tôi nhận được kết quả trong đó tên của cô ấy được liệt kê trong NỘI DUNG, nhưng không phải là kết quả mà cô ấy đã ĐĂNG.

Đây có vẻ là một vấn đề đơn giản, nhưng tôi chưa tìm ra giải pháp cho nó.

Cảm ơn.

Câu trả lời:


6

Có lẽ bạn có thể thử thêm điều kiện của mình trực tiếp vào chuỗi truy vấn, sử dụng cái gì đó như thế này

function wpse_29570_where_filter($where){
        global $wpdb;
        if( is_search() ) {
            $search= get_query_var('s');
            $query=$wpdb->prepare("SELECT user_id  FROM $wpdb->usermeta WHERE ( meta_key='first_name' AND meta_value LIKE '%%%s%%' ) or ( meta_key='last_name' AND meta_value LIKE '%%%s%%' )", $search ,$search);
            $authorID= $wpdb->get_var( $query );

            if($authorID){
                $where = "  AND  ( wp_posts.post_author = {$authorID} ) ";
            }

         }
         return $where;
    }

    add_filter('posts_where','wpse_29570_where_filter');

Tôi hiểu những gì bạn đang cố gắng làm ở đây, nhưng thật không may, nó không hiệu quả với tôi. Điều này thực sự bỏ đặt chuỗi truy vấn và sau đó đặt Author_name thành không có gì. Tôi tin rằng kết quả là MỌI THỨ đã được đăng.
zack

Đã cập nhật câu trả lời của tôi cho một cái gì đó có thể hoạt động tốt hơn
hacks

1
Tôi đã cập nhật mã này và dường như không trả lại tất cả kết quả từ người dùng. Mặc dù nó trả về MỘT SỐ kết quả, tôi không chắc cái nào được chọn và cái nào bị bỏ lại, hoặc TẠI SAO. Về cơ bản, kết quả tìm kiếm tên người dùng và kho lưu trữ cho người dùng đó rất khác nhau.
zack

1
@Jake bạn đúng :), tôi đoán lúc đó tôi đã quên xóa dòng đó khi kiểm tra. Đã cập nhật câu trả lời
hacksy

1
$where =lẽ nên là$where .=
Jason
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.