如果用户是管理员而不是超级管理员,则在多站点中CURRENT_USER_CAN(‘管理员’)不会返回TRUE

时间:2015-08-25 作者:Blake Mann

我安装了多站点WordPress,并且在两个站点上都有一个设置为“管理员”角色的用户。但是,功能current_user_can(\'Administrator\') 当以他们的身份登录时,不会返回true,这是我所期望的。

然而,我的用户帐户在这两个站点上都是“管理员”,在网络上也是“超级管理员”,我的呼叫返回true。

为什么会这样?如果只检查“超级管理员”而不只是“管理员”,第一个用户不应该是false吗?

如果这是一个问题,是否有其他方法可以检查用户是否设置为“管理员”角色而不是“超级管理员”?

2 个回复
最合适的回答,由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上,核心是为网络管理员保留的。

SO网友:dvp

你的表达方式有误current_user_can(\'administrator\') 而不是current_user_can(\'Administrator\') (a代替a)。

相关推荐

WP_COMMENTS表真的很大,正在慢慢加载/wp-admin/dit-Comments.php

我们的wp\\u注释有数百万行。当我们加载时/wp/wp-admin/edit-comments.php 它将超时。看看mysql,这个简单的查询需要很长时间SELECT wp_comments.comment_ID FROM wp_comments WHERE ( ( comment_approved = \'0\' OR comment_approved = \'1\' ) ) AND comment_type IN (\'pingback\', \'trackback\')&