尝试根据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 );
答案 0 :(得分: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放在一起的check user role function。
我建议你使用只有管理员和你的超级用户才有的功能,可能是update_core
或类似的东西。