1

尝试根据 wordpress 3.6 中的角色限制对管理区域的访问

尝试了以下。这可以防止没有管理员访问权限的任何人,但不能防止我的自定义角色“超级用户”。这会一直重定向到主页。

function prevent_admin_access()
{
if ( false !== strpos( strtolower( $_SERVER['REQUEST_URI'] ), '/wp-admin' ) && !current_user_can( 'administrator' ) && !current_user_can( 'Super User' ) )
wp_redirect( home_url() );
}
add_action( 'init', 'prevent_admin_access', 0 );
4

1 回答 1

1

与您(或插件)一起添加新角色时,add_role()定义了“角色名称”和“角色的显示名称”(http://codex.wordpress.org/Function_Reference/add_role)。

current_user_can()采用名称,而不是显示名称,即“区分大小写,并且应该全部小写”(参见http://codex.wordpress.org/Function_Reference/current_user_can

在你的情况下,我猜那将是

... && !current_user_can( 'super_user' ) ...

编辑:

直到现在我才看到您正在传递角色而不是能力current_user_can()。这将起作用(至少在 WP 3.6 中),但不要那样做。

从文档(上面的链接):

不要将角色名称传递给 current_user_can(),因为这不能保证正常工作(请参阅#22624)。相反,您可能希望尝试由 AppThemes 组合的检查用户角色功能。

我建议您使用一些只有管理员和您的超级用户才有的功能,可能update_core或类似的东西。

于 2013-10-26T10:33:18.663 回答