當(dāng)前位置:首頁>WordPress建站>WordPress開發(fā)>WordPress用戶角色與用戶能力/權(quán)限

WordPress用戶角色與用戶能力/權(quán)限

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/

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號 WPDAXUE
WordPress開發(fā)

WordPress 創(chuàng)建支持分頁的用戶列表頁面

2014-10-7 7:59:57

WordPress開發(fā)

WordPress 3.9+ TinyMCE 4 增強:添加樣式、按鈕、字體、下拉菜單和彈出式窗口

2014-11-22 10:15:15

7 條回復(fù) A文章作者 M管理員
  1. 大師傅

    怎么創(chuàng)建VIP角色,erphpdown功能太多了,我只需要VIP可見,其他的都不用

  2. 大大,如何修改一個用戶的角色呢?
    比如他本來是訂閱者 有一個提升按鈕 點擊后他的角色修改為投稿者
    求助思路

  3. ? 看不大明白啊,請細(xì)講

  4. 如果要做一個強大的會員系統(tǒng),必須對這個很了解!學(xué)習(xí)了!

  5. 在哪里修改呢?

  6. 又是沙發(fā)。。。總趕腳沙發(fā)都是我一個人的。

    • ?? 哈哈

?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

开化县| 龙州县| 新化县| 甘德县| 称多县| 成安县| 南乐县| 大埔区| 乃东县| 马边| 淅川县| 密云县| 青浦区| 哈尔滨市| 望都县| 淮滨县| 元谋县| 齐齐哈尔市| 满洲里市| 临沂市| 南充市| 施秉县| 金溪县| 祁连县| 泽州县| 湖州市| 南平市| 万年县| 衡南县| 常德市| 岚皋县| 山丹县| 黔西县| 利川市| 临武县| 紫金县| 信阳市| 夏河县| 阳西县| 台中市| 岫岩|