×
如何判断WordPress登录用户的角色

current_user_can()的正确用法

current_user_can()文档中有一句话要注意一下

Do not pass a role name to current_user_can(), as this is not guaranteed to work correctly.

意思是说传递用户角色名称(如author、contributor)作为参数不能100%保证返回正确的结果,正确的用法是传递$capability,从这个函数的表面意思看,参数是权限比参数是角色名称更靠谱。

所以,要根据不同角色拥有的权限来判断用户角色,用户权限可以在Roles and Capabilities中找到

判断用户是否为管理员(Administrator)

if( current_user_can( 'manage_options' ) ) {
    echo 'The current user is a administrator'; 
}

判断用户是否为编辑(Editor)

if( current_user_can( 'publish_pages' ) && !current_user_can( 'manage_options' ) ) {
    echo 'The current user is an editor'; 
}

判断用户是否为作者(Author)

if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) {
    echo 'The current user is an author'; 
}

判断用户是否为投稿者(Contributor)

if( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) {
    echo 'The current user is a contributor'; 
}

判断用户是否为订阅者(Subscriber)

if( current_user_can( 'read' ) && !current_user_can( 'edit_posts' ) ) {
    echo 'The current user is a subscriber'; 
}

用$current_user判断

$current_user是WordPress的一个全局变量,当用户登录后,这个里面就会有用户的角色和权限信息。

当WordPress的init action执行后,就可以安全的使用$current_user全局变量了。

在模板文件中判断登录用户是否为作者(Author)

global $current_user;
if( $current_user->roles[0] == 'author' ) {
    echo 'The current user is an author';
}

在functions.php中判断用户是否为作者(Author)

add_action( 'init', 'check_user_role' );
 
function check_user_role() {
    global $current_user;
    if( $current_user->roles[0] == 'author' ) {
        echo 'The current user is an author';
    }
}

之所以要使用

add_action( 'init', 'check_user_role' );

是因为$current_user这个全部变量到init action执行时才完成赋值,既然要读它的内容,至少要等到它的内容准备好后再读取。functions.php的代码先与init action执行,所以在functions.php中直接写global $current_user是无法获取用户信息的。详细信息可以参考《WordPress Actions加载顺序》。

检查用户角色之前,还可以先检查一下用户是否登录


更简单的方法

还有一种更直接的方法,例如判断当前用户是否为管理员

global $current_user;
if(in_array( 'administrator', $current_user->roles )){
    echo 'administrator';
}

WordPress 香港虚拟主机推荐: 衡天主机(完美支持伪静态,100%兼容优畅主题,省去配置烦恼,轻松建站)
如果本文对你有帮助,你可以扫描右边的二维码打赏,谢谢支持
联系优畅:uctheme#qq.com (#改为@)
微信订阅号:优畅主题(uctheme)
官网淘宝店:http://uctheme.taobao.com
版权声明:版权归 优畅主题 所有,转载请注明出处!
转载请保留链接: https://www.uctheme.com/2266.html
谢谢微信打赏

微信钱包扫描赞助

谢谢支付宝打赏

支付宝扫一扫赞助

品牌创立:2012-11-18优畅主题

优畅主题成立于2012年11月18日,专业Wordpress导购主题开发商,拥有多年Wordpress主题设计经验,专门为淘宝客和导购客站长量身打造高端赚钱模板,我们注重细节,有着严谨的开发态度,一切从客户角度出发,如果你也喜欢 WordPress导购主题,欢迎和我们一起交流!

上一篇 说说淘宝客采集程序,使用阿里妈妈(淘客联盟),不要让金钱蒙蔽你的眼睛 WordPress前台显示登录会员的注册时间 下一篇

8 + 9 = ?

  1. 5#
    Feeey个人博客 2017-03-12 上午 5:02 [回复]

    大王叫我来巡山,我把博客转一转。(*^__^*) 嘻嘻……

  2. 4#
    Feeey个人博客 2017-02-26 下午 11:33 [回复]

    博主最近没怎么更新啊,我来转转。

  3. 3#
    九州套图 2017-02-19 上午 10:04 [回复]

    简约不简单,大气有内涵!

  4. 2#
    九州套图 2017-02-01 下午 8:01 [回复]

    又是一年,祝博主要啥有啥想啥来啥总之不缺啥!

  5. 1#
    Feeey个人博客 2017-01-27 下午 12:39 [回复]

    进来转转,博主新年快乐。

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册