Tìm kiếm bảng chính
Đơn giản chỉ cần sử dụng WP_User_Query
vớ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_email
các cột tương tự hoặc từ {$wpdb->prefix}users
bả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_email
vớ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 search
chuỗi có một số "ma thuật" các tính năng: Các search_columns
giá trị mặc định để ...
user_email
nếu @
có mặt trong search
arg.
user_login
và ID
nếu đối search
số là số
user_url
nếu search
chuỗi chứa http://
hoặchttps://
- hoặc ...
user_login
và user_nicename
nế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_name
hoặc last_name
, thì bạn sẽ phải thực hiện meta_query
vì 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/id
cũ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ự relation
chủ 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();