WordPress 判断管理员登录的两种办法

编辑于:2021年12月20日
WordPress 判断管理员登录的两种办法

WordPress 二次开发时,后台程序要验证管理员是否登录,以确保系统安全,is_admin()current_user_can() 均可达到验证目的,但是需要注意 is_admin() 在某些情况下并不适用。

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 各个用户组所对应的级别,那么我们需要来判断是否为管理员,也就是 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 );
}

相关推荐