加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > wordpress > 正文

WordPress用户角色与用户能力/权限

发布时间:2020-12-14 14:22:11 所属栏目:wordpress 来源:网络整理
导读:由站长 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。 wordpress 用户角色(user roles)是 WP 或者其它插件增加的,可以让网站管理员(网站管理员也是一种角色)来方便的管理用户的权限/能力(Capabilities

以下代码由PHP站长网 52php.cn收集自互联网现在PHP站长网小编把它分享给大家,仅供参考

wordpress 用户角色(user roles)是 WP 或者其它插件增加的,可以让网站管理员(网站管理员也是一种角色)来方便的管理用户的权限/能力(Capabilities,一般情况下,一种角色不止有一种能力,所以用复数),使用免费的插件,可以方便的管理每种角色的能力,简单的理解是:角色具有某些能力,是某些能力的代称。WordPress 用户角色与用户能力/权限(Roles and Capabilities)系统是自 WordPress2.0 起被逐步完善的。

WORDPRESS 自身的用户角色

仅指 WordPress 安装时就有的几种用户角色(所列为角色名称):

Subscriber:订阅者

Contributor :投稿者

Author :作者

Editor :编辑

Administrator :管理员

此外,如果启用了 WordPress 多站,将会多出一种用户角色:Super Admin(超级管理员)。

WORDPRESS 自身的用户能力/权限,WordPress 在安装完毕之后,会为各个用户角色分配默认的用户能力/权限,各个用户能力/权限的名称(ID)以及其含义此不赘述。

WORDPRESS 自身的用户能力/权限的用途

广泛,可以限定用户权限,这是明摆的事情,例如:用在插件或者主题的设置后台,以限制可看到菜单项并进行某些操作的用户组;限制可以发表/修改/删除自己的文章(如果有权限发表的话)/别人的文章等等。有时候在输出某些内容或者存储某些内容之前,有必要检查下当前已登录用户的权限,这时候就需要进行权限检查了:

if ( current_user_can( $capability ) ) {

//为有权限的用户做些什么

}

还可以在循环中检查当前用户是否有对某个对象的操作能力:

current_user_can( 'edit_post',$post_id );

还可以对文章(广义上的文章,泛指各种文章类型的文章)的作者的权限进行检查:

if ( author_can( $post,$capability ) ) {

// 如果作者有相应权限,怎么着

}

比如,有某种权限了,就直接发表,否则就置为草稿或者待审状态等。

以用户为对象的角色、能力/权限操作

在 WordPress 中,只要角色之间的能力互不冲突(一般情况下不会发生这种事情),同一个用户可以同时有多种角色。在获取用户对象之后,可以 为某个用户添加一种角色:

$user->add_role( $role_name );

如果想限定某用户只有一种角色,可以用:

$user->set_role( $role_name );

移除用户的某个角色:

$user->remove_role( $role_name );

用户的能力/权限操作

// 检查给定用户是否有某种能力/权限或者角色

if ( $user->has_cap( $cap_name ) ) {

// 做点儿啥

}

// 为给定用户添加一种能力/权限

$user->add_cap( $cap_name );

// 为给定用户移除一种能力/权限

$user->remove_cap( $cap_name );

// 为给定用户移除全部能力

$user->remove_all_caps();

以网站为对象的角色、能力/权限操作

注意:进行这些操作的时候,最后声明下全局变量 global $wp_roles;,然后以$wp_roles->add_role();、 $wp_roles->remove_role();的方式进行操作,特别是在插件中使用时。


添加用户角色

/*

$role_name:相当于角色的ID;

$display_name:角色的显示名称,支持本地化字符;

$capabilities:该角色应具有的能力组成的数组(能力ID/名称为ID,值为值组成的数组)

*/

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 );

添加自定义的用户能力/权限

// 获取 "pama" 角色对象

$role = get_role( 'author' );

// 为该角色对象添加 "sleep" 能力

$role->add_cap( 'sleep' );

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读