默認(rèn)情況下,在WordPress后臺的用戶列表中,只能通過用戶名和郵箱搜索用戶。

如果你希望能通過搜索用戶的名字、姓氏和公開顯示名找到用戶,你可以將下面的代碼添加到當(dāng)前主題的 functions.php 文件即可:
/*
* 讓W(xué)ordPress后臺用戶列表可以搜索名字、姓氏和公開顯示名
* From http://www.ydqwiac.cn/wordpress-user-search.html
*/
//讓函數(shù)只應(yīng)用于WordPress后臺
if (is_admin()) {
//通過鉤子掛載函數(shù)
add_action('pre_user_query', 'wpdaxue_pre_user_query');
}
function wpdaxue_pre_user_query($user_search) {
global $wpdb;
$vars = $user_search->query_vars;
if (!is_null($vars['search'])) {
// 出于某種原因,搜索詞被星號包括,刪除它們
$search = preg_replace('/^\*/', '', $vars['search']);
$search = preg_replace('/\*$/', '', $search);
//搜索公開顯示名
if(!empty($search)){
$user_search->query_where = substr(trim($user_search->query_where), 0, -1) . " OR display_name LIKE '%". $search . "%')";
}
//搜索名字和姓氏
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON " .
"{$wpdb->users}.ID=m1.user_id AND (m1.meta_key='first_name')";
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m2 ON " .
"{$wpdb->users}.ID=m2.user_id AND (m2.meta_key='last_name')";
$names_where = $wpdb->prepare("m1.meta_value LIKE '%s' OR m2.meta_value LIKE '%s'", "%{$search}%", "%$search%");
$user_search->query_where = str_replace('WHERE 1=1 AND (', "WHERE 1=1 AND ({$names_where} OR ", $user_search->query_where);
}
return $user_search;
}
如果以上的代碼仍不能滿足你的要求,那你可以試試 Better User Search 插件,它可以讓你的用戶列表頁面支持搜索所有字段。
聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。





為什么搜中文不行?
用了代碼之后是可以搜索名字了,但是,問題來了。無論點擊哪個用戶組,都只顯示全部用戶組的前4個人,希望能得到解答。
使用這段代碼后,無論是點擊文章列表還是頁面列表里的快速編輯,作者:一欄 會出現(xiàn)很多重復(fù)的昵稱,沒有權(quán)限的用戶,也會出現(xiàn)在列表中