安道

博客文章

新用户角色无法访问后台的解决方法

在最近的一个项目中要添加一些新的用户角色,这本是一件很简单的事情,网上有很多教程可以参考。但是在实际的使用过程中却遇到了一个问题:新添加的用户角色所辖的用户无法进入后台,提示权限不足。即便是 WordPress 默认角色中权限最低的“订阅者”也是可以进入后台查看个人资料的。这是怎么回事呢?经过一个多小时的反复实验,最终找到一个解决方法。

以下是这个解决方法的代码片段,请灵活使用。

add_role( 'customer', 'Customer', array() );

$role = &get_role( 'customer' );
$role->add_cap( 'custom_cap' );

add_role 的用法在文档中说的很明白,第三个参数是给这个新角色指定一个所拥有权限的数组,比如“订阅者”的权限是 array( 'read' )。但是,如果此时指定了权限(比如 read),这个新角色下的用户是无法进入后台的,也就是出现前面所说的“权限不足”的问题。上述代码片段的第 2、3 行代码可以解决这个问题。

解决方法:在用 add_role 添加新用户角色时暂不指定任何权限,也就是给其第三个参数赋值一个空数组。然后通过 get_role 获取刚刚添加的新用户角色,再使用 add_cap 为其添加相应的权限。如果需要添加多个权限,需要多次调用 add_cap

以上是对“新添加的用户角色所辖的用户无法进入后台”这个问题的一种解决方法。这可能是 WordPress 的一个 bug。