WP开发:is_admin()等两种方法判断管理员是否登录

2020年02月18日23:45:30

WP二次开发时,后台程序要验证管理员是否登录,以确保系统安全。这里介绍两种方法,均可达到验证目的。

1、使用is_admin()函数

通常情况下,使用is_admin()函数,便可验证当前用户是否管理员了。

使用方法:

if (is_admin()){
  //验证成功
}else{
  //验证失败
}

is_admin()源码:

function is_admin() {
if ( isset( $GLOBALS['current_screen'] ) ) {
  return $GLOBALS['current_screen']->;in_admin();
} elseif ( defined( 'WP_ADMIN' ) ) {
  return WP_ADMIN;
}
  return false;
}

2、使用current_user_can()函数

is_admin()这个函数判断当前登陆用户是不是管理员,这个函数是用来判断是否显示控制板或管理栏,也就是说是否处于后台控制面板中。

current_user_can()这个函数,是用来判断当前用户是否具有某级别的权限,WordPress中用户权限如下表所示:

WordPress 各个用户组所对应的级别

WordPress 各个用户组所对应的级别

这个图表展示了 WordPress 各个用户组所对应的级别,那么我们需要来判断是否为管理员,也就是 Administrator,我们就用 level_10。判断代码就如下:

if(current_user_can('level_10')){
    //加入符合管理员后需要添加的内容
}

这样想判断其他级别的用户也就是换个级别就可以了,利用这个我们就可以做出很多对应各个用户组的对应功能。

current_user_can()源码:

function current_user_can( $capability, ...$args ) {
	$current_user = wp_get_current_user();
	if ( empty( $current_user ) ) {
		return false;
	}
	return $current_user->has_cap( $capability, ...$args );
}