Skip to content

[WordPress] 如何使用程式列出網站使用者的資料

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


Read More

Leave a Reply