Last Updated on 2021-12-27 by Clay
在製作 WordPress 外掛功能時,有需多時候我們會需要取得使用者的資料,比方說判斷當前使用者是不是註冊過該網站會員、比方說要在一個頁面中列出網站的撰稿人...... 等等。應用的場景可謂是數之不盡。
其中,又可以區分成『取得當前使用者資訊』以及『取得特定使用者資訊』這兩種需求。其實這兩種都非常簡單,以下我依序介紹。
取得當前使用者資訊
以下列出該如何取得使用者的名稱、電子郵件、以及身份。
// Get user info
$current_user = wp_get_current_user();
echo 'Username: ' . $current_user->user_login . '<br>';
echo 'Email: ' . $current_user->user_email . '<br>';
echo 'User first name: ' . $current_user->user_firstname . '<br>';
echo 'User last name: ' . $current_user->user_lastname . '<br>';
echo 'User display name: ' . $current_user->display_name . '<br>';
echo 'User ID: ' . $current_user->ID . '<br>';
echo 'User Role: ' . json_encode($current_user->roles) . '<br>';
Output:
你會發現,即使不存在的資訊也不會報錯,只是會回傳空值。
取得特定使用者資訊
在取得特定使用者資訊前,先記錄一段取得全部使用者資訊的範例程式。其概念為先使用 get_users()
取得所有使用者,再使用使用者 ID 來透過 get_userdata()
取得使用者資訊。下面的步驟就與單一使用者取得資訊一模一樣了。
// Get all users info
$users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach ( $users as $user ) {
$_user = get_userdata($user->ID);
echo 'Username: ' . $_user->user_login . '<br>';
echo 'Email: ' . $_user->user_email . '<br>';
echo 'User first name: ' . $_user->user_firstname . '<br>';
echo 'User last name: ' . $_user->user_lastname . '<br>';
echo 'User display name: ' . $_user->display_name . '<br>';
echo 'User ID: ' . $_user->ID . '<br>';
echo 'User Role: ' . json_encode($_user->roles) . '<br><br>';
}
Output:
可以發現,我測試的網站上存在著一些我新增的測試用使用者帳號。
但是,這個範例是一口氣取得所有的使用者啊?萬一我們需要取得特定的使用者呢?
如果你去讀 get_users()
的官方文件,你會發現我們傳入的參數 $args
是有意義的(就是上方範例中的 array( 'fields' => array( 'ID' )
)。
假設你要搜索僅有訂閱者的會員資料,你可以將程式碼修改成:
$args = array(
'role' => 'Subscriber',
'orderby' => 'last_name',
'order' => 'ASC'
);
$users = get_users( $args );
這樣一來,就只有訂閱者的資料會被回傳了。更多的資訊,可以參閱下方我所附上的官方文件說明。
References
- https://developer.wordpress.org/reference/functions/get_users/
- http://man.hubwiz.com/docset/WordPress.docset/Contents/Resources/Documents/codex.wordpress.org/Function_Reference/get_users.html