WordPress根據用戶名獲取用戶id的兩種方式
這個問題是我在做前端登陸註冊,並通過郵件激活賬戶的時候發現的,因為WordPress並沒有封裝單獨的根據用戶名獲取用戶id的方法,百度後找到兩種方式來獲得用戶id。一種是直接操作數據庫,通過數據庫查詢找到我們需要的用戶id,另一種就是通過WordPress函數查詢用戶所有數據,然後輸出id字段。其實前者就是後者的封裝,下面我們看看這兩種方式的實現代碼。
方式一,查數據庫獲得用戶id
function get_user_id($user=”){
$user=”‘”.$user.”‘”;
global $wpdb;
$user_ids = $wpdb->get_col(“SELECT ID FROM $wpdb->users WHERE user_login = $ user ORDER BY ID”);
foreach($user_ids as $user_id){
return $user_id;
}
}
將上面的代碼放在functions.php文件中,使用輸出用戶id。
方式二,WordPress函數查詢用戶id
function get_user_id($user=”){
$author_obj = get_user_by(‘login’, $user);
return $author_obj->ID;
}
使用方式與方式一的一樣,核心代碼只有兩句get_user_by與$author_obj-> ID,與方式一相比,明顯代碼簡潔很多,建議使用第二種方式獲取用戶id。
get_user_by使用說明
get_user_by( string $field, int|string $value )
按指定字段檢索用戶信息。
參數解釋
$field
(字符串) (必須)用戶檢索的字段. id | ID | slug | email | login.
$value
(整型|字符串) (必須)檢索字段的值. user ID, slug, email address, or login name.
返回值
(WP_User|false) 成功返回WP_User對象,失敗返回false。
簡單使用
$user = get_user_by( ’email’, ‘user@example.com’ );
echo ‘User is ‘ . $user->first_name . ‘ ‘ . $user->last_name;