创建和删除用户角色
WordPress 用户角色具有可扩展的特点。你可以添加或者是删除一个角色,添加一个角色很简单,你只需要一个角色的标签名字,一个显示名字,然后再加上用户权限就够了。
1 | add_action( 'init', 'wptuts_addrole' ); |
如果你检查用户设置页面,(选择一个用户进入编辑模式),你就会发现你新添加的一个角色已经可用了。它是以你拟定的显示名称出现在屏幕上的。
有一件事必须提醒一下,用户角色的创建只要做一次就好了。也就是说,如果你像上面给出的代码那样,挂钩到 “init” 动作,你其实就在重新创建一个用户角色了。每运行一次,就重建一次。这并不是什么好事情。在实际运用中,你只需要一次性把用户角色创建完就可以了。然后你就可以挂钩到到插件的激活钩子,以确保当禁用插件的时候可以去除该角色。
去除用户角色也是很直接的事情,你只需要用到角色的标签名字。
1 | add_action( 'init', 'wptuts_removerole' ); |
给用户角色添加权限
和用户一样,用户角色也有一个特定的类别:WP_Role。但是,初始化这个类别需要用到角色名称和角色的权限,
WordPress 还提供了另外一个函数 get_role() ,这个函数只需要角色名字和你的初始化类别。
1 | add_action('init', 'wptuts_getrole'); |
返回的目标有两个属性和三个规则
WP_Role 属性
capabilities 一个表示用户权限的数组。
name 角色名字
WP_Role 规则
add_cap() 添加权限到用户角色目标值。
has_cap() 适合用户是否具有某种权限。
remove_cap() 去除角色的权限。
检查权限
设定好的用户角色和权限,如果你不用,就只是个摆设而已。你应该强制在你的插件和主题上使用,在执行代码之前先检查一下。你应该总是检查权限,而不是角色。一个角色为“编辑”的用户不能保证一直都是 WordPress 默认的权限,因为这是可以被别的插件或者是博客主修改的。
WordPress 上有三个函数用来检查权限,而这三个函数在某种程度上来说是可以替换的。
current_user_can()
user_can()
author_can()
current_user_can() 这个函数是用来检查目前用户是否有特定的权限的。也允许一个帖子或者是目标检查 meta 权限。
user_can() 差不多是和上面一样用的,但是你可以指定特定的ID。但是这个函数不会检查 meta 权限。所以如果你需要检查一个用户的 meta 权限和现在的用户是不是一样,那就不好用了。为了达到这个目的,你可以使用 author_can() 函数来检查,看看基于某个权限和 post ID 的用户是否可以完成特定的项目。
1 | // checks if the post author of the first post can publish the post |