wordpress根据用户等级执行不同的操作

有时候,在输出或存储某些内容之前,需要检查当前wordpress用户等级权限。WordPress用户角色是通过WP或者其他插件添加的,可以让站长(站长也是角色的一种)方便的管理用户的权限/能力(能力,一般来说一个角色有多个能力,所以是复数)。使用免费插件可以方便地管理wordpress主题每个角色的能力。简单理解,一个角色有一定的能力,是一定能力的代名词。

WordPress 默认的用户等級

  • 管理员:Administrator: level 10
  • 编辑:Editor: Level 7
  • 作者:Author: Level 4
  • 投稿者:Contributor: Level 2
  • 订阅者:Subscriber: Level 0
  • 访客: Level 在 0 以下

以前的老方法是这样来判断权限,如下代码:

<?php if (current_user_can('level_10')) : ?>
管理员权限
<?php elseif (current_user_can('level_7')) : ?>
编辑权限
<?php elseif (current_user_can('level_4')) : ?>
作者权限
<?php elseif (current_user_can('level_2')) : ->
投稿者权限
<?php elseif (current_user_can('level_0')) : ?>
订阅者权限
<?php else : ?-->
普通/默认权限
<?php endif; ?-->

这就是current_user_can()来判断登录用户的角色,比如我用current_user_can(‘author ‘)来判断当前用户是否是作者。我记得官方WordPress文档中给出的例子也是这样使用的。不过今天看了文档,好像用法变了。将角色作为参数传递不再可靠。正确的用法是传递$capability。那么如何判断用户角色呢?仍然使用current_user_can()方法,但是传递的参数不同。

判断用户是否为管理员(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是WordPress的一个全局变量。当用户登录时,会有关于用户的角色和权限的信息。

当WordPress的init动作被执行时,你可以安全地使用$current_user全局变量。

我爱主题网 自2012
主题:260+ 销售:1000+
兼容浏览器

电话咨询

7*12服务咨询电话:

133-7205-6573

微信咨询