WordPress用戶角色(user roles)是WP或者其它插件增加的,可以讓網(wǎng)站管理員(網(wǎng)站管理員也是一種角色)來方便的管理用戶的權(quán)限/能力(Capabilities,一般情況下,一種角色不止有一種能力,所以用復(fù)數(shù)),使用免費的插件,可以方便的管理每種角色的能力,簡單的理解是:角色具有某些能力,是某些能力的代稱。
WordPress用戶角色與用戶能力/權(quán)限(Roles and Capabilities)系統(tǒng)是自Wordpress2.0起被逐步完善的。
基本的用戶角色與用戶能力/權(quán)限
WORDPRESS自身的用戶角色
僅指Wordpress安裝時就有的幾種用戶角色(所列為角色名稱):
- Subscriber:訂閱者
- Contributor :投稿者
- Author :作者
- Editor :編輯
- Administrator :管理員
此外,如果啟用了Wordpress多站,將會多出一種用戶角色:Super Admin(超級管理員)。
WORDPRESS自身的用戶能力/權(quán)限
WordPress在安裝完畢之后,會為各個用戶角色分配默認(rèn)的用戶能力/權(quán)限,各個用戶能力/權(quán)限的名稱(ID)以及其含義此不贅述。
WORDPRESS自身的用戶能力/權(quán)限的用途
廣泛,可以限定用戶權(quán)限,這是明擺的事情,例如:用在插件或者主題的設(shè)置后臺,以限制可看到菜單項并進(jìn)行某些操作的用戶組;限制可以發(fā)表/修改/刪除自己的文章(如果有權(quán)限發(fā)表的話)/別人的文章等等。
有時候在輸出某些內(nèi)容或者存儲某些內(nèi)容之前,有必要檢查下當(dāng)前已登錄用戶的權(quán)限,這時候就需要進(jìn)行權(quán)限檢查了:
if ( current_user_can( $capability ) ) {
//為有權(quán)限的用戶做些什么
}
還可以在循環(huán)中檢查當(dāng)前用戶是否有對某個對象的操作能力:
current_user_can( 'edit_post', $post_id );
還可以對文章(廣義上的文章,泛指各種文章類型的文章)的作者的權(quán)限進(jìn)行檢查:
if ( author_can( $post, $capability ) ) {
// 如果作者有相應(yīng)權(quán)限,怎么著
}
比如,有某種權(quán)限了,就直接發(fā)表,否則就置為草稿或者待審狀態(tài)等。
以用戶為對象的角色、能力/權(quán)限操作
在Wordpress中,只要角色之間的能力互不沖突(一般情況下不會發(fā)生這種事情),同一個用戶可以同時有多種角色。
在獲取用戶對象之后,可以 為某個用戶添加一種角色:
$user->add_role( $role_name );
如果想限定某用戶只有一種角色,可以用:
$user->set_role( $role_name );
移除用戶的某個角色:
$user->remove_role( $role_name );
用戶的能力/權(quán)限操作
// 檢查給定用戶是否有某種能力/權(quán)限或者角色
if ( $user->has_cap( $cap_name ) ) {
// 做點兒啥
}
// 為給定用戶添加一種能力/權(quán)限
$user->add_cap( $cap_name );
// 為給定用戶移除一種能力/權(quán)限
$user->remove_cap( $cap_name );
// 為給定用戶移除全部能力
$user->remove_all_caps();
以網(wǎng)站為對象的角色、能力/權(quán)限操作
注意:進(jìn)行這些操作的時候,最后聲明下全局變量global $wp_roles;,然后以$wp_roles->add_role();
、 $wp_roles->remove_role();的方式進(jìn)行操作,特別是在插件中使用時。
添加用戶角色
/*
$role_name:相當(dāng)于角色的ID;
$display_name:角色的顯示名稱,支持本地化字符;
$capabilities:該角色應(yīng)具有的能力組成的數(shù)組(能力ID/名稱為ID,值為值組成的數(shù)組)
*/
add_role( $role_name, $display_name, $capabilities );
示例:
add_role( 'pama', '銀牌會員', array('read'=>true,'level_0'=>true) );
刪除用戶角色
remove_role( $role_name );
示例:
remove_role( 'pama' );
獲取用戶角色對象
get_role( $role );
添加自定義的用戶能力/權(quán)限
// 獲取 "pama" 角色對象
$role = get_role( 'author' );
// 為該角色對象添加 "sleep" 能力
$role->add_cap( 'sleep' );
參考頁面:https://wordpress.org/support/article/roles-and-capabilities/






怎么創(chuàng)建VIP角色,erphpdown功能太多了,我只需要VIP可見,其他的都不用
大大,如何修改一個用戶的角色呢?
比如他本來是訂閱者 有一個提升按鈕 點擊后他的角色修改為投稿者
求助思路
? 看不大明白啊,請細(xì)講
如果要做一個強大的會員系統(tǒng),必須對這個很了解!學(xué)習(xí)了!
在哪里修改呢?
又是沙發(fā)。。。總趕腳沙發(fā)都是我一個人的。
?? 哈哈