問題描述
我需要獲得與使用者相關聯的角色 – 而不是 「當前登入的使用者」 。
我正在使用 Buddypress(不是這應該是關於這個問題的性質),我在 bp_members()迴圈。
在任何給定的時間,如何檢索在迴圈中報告的使用者的角色?
謝謝。
最佳解決方案
使用使用者 ID 和 WP_User:
$user = new WP_User( $user_id );
print wp_sprintf_l( '%l', $user->roles );
Update
/**
* Get user roles by user ID.
*
* @param int $id
* @return array
*/
function wpse_58916_user_roles_by_id( $id )
{
$user = new WP_User( $id );
if ( empty ( $user->roles ) or ! is_array( $user->roles ) )
return array ();
$wp_roles = new WP_Roles;
$names = $wp_roles->get_names();
$out = array ();
foreach ( $user->roles as $role )
{
if ( isset ( $names[ $role ] ) )
$out[ $role ] = $names[ $role ];
}
return $out;
}
用法示例:
print '<pre>'
. htmlspecialchars(
print_r( wpse_58916_user_roles_by_id(1), TRUE )
)
. '</pre>';
Array
(
[administrator] => Administrator
)
次佳解決方案
如果 bp_members 返回一個 WP_User 物件陣列,則每個應該都有一個包含使用者角色陣列的屬性 roles 。
否則,您可以使用 get_user_meta 作為鍵 wp_capabilities,它將返回一個 role => capability 對陣列:
<?php
$caps = get_user_meta($user->ID, 'wp_capabilities', true);
$roles = array_keys((array)$caps);
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。