有关 WordPress 角色和权限的知识,WordPress 强大的用户角色和权限管理系统可以让我们随时创建复杂的项目

wordpress自带的角色只有几个,在复杂的需求下很难满足,那就自己创建自定义的角色和权限吧。

需要注意的是,在WordPress中是不能直接在后台添加新的用户组,而是需要通过WordPress的角色和权限API来添加用户角色。

怎么添加自定义角色和权限? - wordpress开发-Npcink

请备份数据库,谨慎操作

方案一

以修改“订阅者”为“忠实会员”为例,复制下面的代码到 wordpress 主题根目录下的 function.php 文件<?php下面。

  1. function wps_change_role_name() {
  2.  global $wp_roles;
  3.  if ( ! isset( $wp_roles ) )
  4.  $wp_roles = new WP_Roles();
  5.  $wp_roles->roles['subscriber']['name'] = '忠实会员';
  6.  $wp_roles->role_names['subscriber'] = '忠实会员';
  7. }
  8. add_action('init', 'wps_change_role_name');

对照修改第 5、6 行中你想要编辑的角色英文名称(小写字母)所对应的中文名称,保存即可。

方案二

新建 自定义角色,例如:VIP用户,将以下代码添加至主题根目录下的functions.php文件的<?php下保存。

  1. // 新建VIP用户角色
  2. add_action( 'admin_init', 'remove_shop_caps');
  3. function remove_shop_caps() {
  4.  // 首先获取订阅者角色。
  5.  $subscriber = get_role('subscriber');
  6.  // 然后基于订阅者角色的权限新建一个角色。
  7.  $vip = add_role('vip','VIP用户',$subscriber->capabilities);
  8. }
  1. //删除“VIP用户”角色
  2. function wps_remove_role() {
  3.  remove_role( 'vip' );
  4. }
  5. add_action( 'init', 'wps_remove_role' );

以上两段代码使用后即可删除,无需留在 functions.php 文件中。

方案三

新建 自定义角色,例如:新角色,添加新角色,并为其赋予分类管理、多媒体文件上传、文章编辑等基本权限。

  1. /*
  2. $role_name:相当于角色的ID;
  3. $display_name:角色的显示名称,支持本地化字符;
  4. $capabilities:该角色应具有的能力组成的数组(能力ID/名称为ID,值为值组成的数组)
  5. */
  6. add_role( $role_name, $display_name, $capabilities );
  1. add_role( 'pama', '银牌会员', array('read'=>true,'level_0'=>true) );

将以下代码添加至主题根目录下的functions.php文件的<?php下保存。

  1. function tp_add_role() {
  2.  add_role( 'newbie', '新角色',
  3.  array(
  4.  'read',
  5.  'edit_posts',
  6.  'delete_posts',
  7.  'manage_categories',
  8.  'upload_files',
  9.  )
  10.  );
  11. }
  12. add_action( 'init', 'tp_add_role' );
  1. //删除“新角色”角色
  2. function wps_remove_role() {
  3.  remove_role( 'newbie' );
  4. }
  5. add_action( 'init', 'wps_remove_role' );

以上两段代码使用后即可删除,无需留在 functions.php 文件中。

赋予权限

  1. //获取 "author" 的角色对象
  2. $role = get_role( 'author' );
  3. //为角色对象添加 "organize_gallery" 权限
  4. $role->add_cap( 'organize_gallery' );

删除权限

此函数为自行构造,仅供测试

  1. //获取 "author" 的角色对象
  2. $user = get_role( 'author' );
  3. // 为给定用户移除一种能力/权限
  4. $user->remove_cap( $cap_name );
  5. // 为给定用户移除全部能力
  6. $user->remove_all_caps();

删除角色

删除订阅者、投稿者、作者、编辑等不需要的默认角色。

  1. function wps_remove_role() {
  2.  remove_role( 'contributor' );
  3.  remove_role( 'subscriber' );
  4.  remove_role( 'author' );
  5.  remove_role( 'editor' );
  6. }
  7. add_action( 'init', 'wps_remove_role' );

代码中 2 至 5 行为想要删除的默认角色,依次为订阅者、投稿者、作者、编辑,可根据需要删减之。

使用后即可删除,无需留在 functions.php 文件中。

WordPress的权限类

介绍WordPress 用于角色和权限幕后工作的三个类,以及这些类提供的接口,我们可以在插件中进行高级权限管理。这三个类是:

  • WP_Roles
  • WP_Role
  • WP_User

这三个类的源代码可以在 wp-includes/capabilities.php 中找到,源代码注释写得很详细,下面总结一下怎样使用这些类:

WP_Roles 类

WP_Roles 是一般的角色管理类,当我们在插件中使用的时候,可以不用实例化一个新的对象,而是直接使用 WordPress 默认创建的一个全局对象 $wp_roles,可以在任何地方使用它,只要事先声明global 即可:

  1. global $wp_roles;

我们上面使用的函数 add_role() 和 remove_role() 实际上是 $wp_roles->add_role() 和 $wp_roles->remove_role() 的别名。因此,我们也可以直接使用 $wp_roles 对象添加和删除角色,例如:

  1. global $wp_roles;
  2. //添加新角色,和add_role()功能一样
  3. $wp_roles->add_role( $role, $display_name, $capabilities )
  4. //删除角色, 和remove_role()功能一样
  5. $wp_roles->;remove_role( $role );

同样也可以使用这种方法得到一个角色:

  1. global $wp_roles;
  2. //通过角色名称得到一个角色,和get_role()功能一样
  3. $wp_roles->get_role( $role );

还可以得到一个可用角色列表,含有角色的名称和角色的显示名称。这个对想为用户提供一个接口,改变权限分配时候非常有用的。

  1. global $wp_roles;
  2. //得到一个值列表包括 $role_name => $display_name
  3. $roles = $wp_roles->get_names();

最后可以使用 $wp_roles 添加和删除权限,此对象几乎包括所有的角色和权限操作。

  1. global $wp_roles;
  2. //为角色$role添加权限$cap
  3. $wp_roles->add_cap( $role, $cap );
  4. //为角色$role删除权限$cap
  5. $wp_roles->remove_cap( $role, $cap );
  6. //例子
  7. $wp_roles->add_cap( 'administrator', 'manage_galleries' );
  8. $wp_roles->remove_cap( 'subscriber', 'view_galleries' );

WP_Role 类

这是一个非常简单的类,它的功能就是添加和删除权限。

  1. //得到角色对象
  2. $role_object = get_role( $role_name );
  3. //为角色对象添加权限$cap
  4. $role_object->add_cap( $capability_name );
  5. //为角色对象删除权限$cap
  6. $role_object->remove_cap( $capability_name );

WP_User类

这个类可以管理每个用户的角色和权限,这意味着可以为一个特定具体的用户分配多个角色,或者为当前用户添加特定的权限,不论他目前是什么角色。

首先需要获取用户对象来操纵它的角色和权限:

  1. //通过用户ID得到用户对象
  2. $user = new WP_User( $id );
  3. //或者通过用户名
  4. $user = new WP_User( null, $name );

我们可以通过用户ID或用户名得到一个用户对象。对于第二种方法,第一个参数必须是空的(null或空字符串),如:

  1. //通过ID得到管理员对象
  2. $admin = new WP_User( 1 );
  3. //通过用户名得到管理员对象
  4. $admin = new WP_User( null, 'admin' );

一旦得到了用户对象,就可以为这个用户的添加另一个角色,而无需修改他目前的角色,这意味着用户可以有多个角色:

  1. $user->add_role( $role_name );

也可以使用 remove_role(),来为该用户删除某个角色:

  1. $user->remove_role( $role_name );

还可以为该用户设置一个角色,这意味着该用户将被删除当前所有的角色,并分配一个新的角色:

  1. $user->set_role( $role_name );

对于权限操作,也有很多的方法来做各种事情:

  1. //检查该用户是否具有某种权限或角色名称
  2. if ( $user->has_cap( $cap_name ) ) {
  3.  //做一些事
  4. }
  5. //为用户添加权限
  6. $user->add_cap( $cap_name );
  7. //为用户删除权限
  8. $user->remove_cap( $cap_name );
  9. //删除用户所有权限
  10. $user->remove_all_caps();

角色和权限总结

以上就是所有有关 WordPress 角色和权限的知识,WordPress 强大的用户角色和权限管理系统可以让我们随时创建复杂的项目。

现在起,让您的站点焕然一新

日主题FheRf子主题,一次购买 永久使用

如果点击咨询购买按钮无法唤起QQ,请手动添加QQ1156488585(请注明主题咨询)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源