我安装了多站点WordPress,并且在两个站点上都有一个设置为“管理员”角色的用户。但是,功能current_user_can(\'Administrator\')
当以他们的身份登录时,不会返回true,这是我所期望的。
然而,我的用户帐户在这两个站点上都是“管理员”,在网络上也是“超级管理员”,我的呼叫返回true。
为什么会这样?如果只检查“超级管理员”而不只是“管理员”,第一个用户不应该是false吗?
如果这是一个问题,是否有其他方法可以检查用户是否设置为“管理员”角色而不是“超级管理员”?
最合适的回答,由SO网友:vancoder 整理而成
我同意current\\u user\\u can(“Administrator”)应该为用户返回true。然而,current\\u user\\u can主要用于检查功能,这通常是一种更可靠的检查。
我建议这样做(未经测试):
if ( current_user_can( \'activate_plugins\' ) && ! current_user_can( \'update_core\' ) ) {
//...
}
因此,这是检查当前用户是否可以激活插件,但不能更新核心。这应该为管理员返回true,而为网络管理员返回false-因为在multisite update\\u上,核心是为网络管理员保留的。