Tìm kiếm bảng chính
Đơn giản chỉ cần sử dụng WP_User_Queryvới một đối số tìm kiếm.
Vì vậy, nếu bạn muốn tìm kiếm ví dụ cho một người dùng có từ khóa trong user_emailcác cột tương tự hoặc từ {$wpdb->prefix}usersbảng của mình, thì bạn có thể làm như sau:
$users = new WP_User_Query( array(
'search' => '*'.esc_attr( $your_search_string ).'*',
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
) );
$users_found = $users->get_results();
Hãy nhớ rằng đó *là một ký tự đại diện. Vì vậy, việc hạn chế ví dụ đối user_emailvới một tên miền sẽ cung cấp cho bạn chuỗi tìm kiếm sau : *@example.com.
Các searchchuỗi có một số "ma thuật" các tính năng: Các search_columnsgiá trị mặc định để ...
user_emailnếu @có mặt trong searcharg.
user_loginvà IDnếu đối searchsố là số
user_urlnếu searchchuỗi chứa http://hoặchttps://
- hoặc ...
user_loginvà user_nicenamenếu một chuỗi có mặt.
Tất cả các giá trị mặc định đó chỉ được đặt nếu không có search_columns đối số nào được chỉ định.
Tìm kiếm bảng meta
Nếu bạn muốn tìm kiếm bằng ví dụ first_namehoặc last_name, thì bạn sẽ phải thực hiện meta_queryvì chúng không phải là một phần của bảng chính:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();
Hãy chắc chắn rằng bạn lấy đúng chuỗi tìm kiếm. Thông thường đó sẽ là get_query_var('s');, nhưng nó có thể - tùy thuộc vào hình thức của bạn name/idcũng là một cái gì đó khác nhau mà bạn có thể muốn lấy bằng cách sử dụng $_GET['user_search']chẳng hạn. Hãy chắc chắn để esacpe đúng cách và loại bỏ khoảng trắng không mong muốn từ đầu và cuối chuỗi.
Hãy ghi nhớ rằng đây là một array( array() )khi có sự relationchủ chốt. Nếu bạn chỉ muốn có một khóa duy nhất được tìm kiếm, có thể dễ dàng hơn chỉ với cách sau:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_key' => 'first_name',
'meta_value' => $search_string,
'meta_compare' => 'LIKE',
) );
$users_found = $users->get_results();
Truy vấn cuối cùng
Kết quả có thể trông gần giống như sau:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'search' => "*{$search_string}*",
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();