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 );
}

相关推荐

WordPress 判断指定ID或当前登录用户是否为管理员权限

WordPress 判断指定ID或当前登录用户是否为管理员权限

WordPress 判断指定 id 的用户是不是管理员,以及判断当前登录用户是不是管理员的办法如下 判断指定id的用户是不是管理员 该需求实现起来非常简单,几行代码搞定,分享一下: function ludou_is_administrator($user_id) { $user = get_userdata($user_id); if(!empty($user->roles) && in_array('administrator', $user->r ...

WordPress 函数:判断页面的类型,如首页、文章页、搜索页

WordPress 函数:判断页面的类型,如首页、文章页、搜索页

WordPress 由首页、文章页、搜索页和404页面等页面组成,当你想在特有页面显示、隐藏、替换和加载某些内容,需要使用页面判断函数来判断。比如在文章页且仅在文章页显示某些内容时,可以使用函数 is_single() 判断。 WordPress 内置非常丰富的页面判断函数,下面列出的判断函数,在何种条件下的输出都是true,此外这些函数 ...

WordPress 函数:esc_html()将符号标签编码转义为HTML实体

WordPress 函数:esc_html()将符号标签编码转义为HTML实体

esc_html() 的作用,是把各种字符转义成 HTML 实体,如 < > & " '(小于号,大于号,&,双引号,单引号)等,如果已经是 HTML 实体的字符则不会再转义。 通过该函数就可以输出完整的字符串,即使字符串带有 HTML 标签,如 字体加粗,而不仅仅是加粗后的 字体加粗 四个文字。 此函数与 esc_attr 类似。 代码结构 用法: 参数 ...

微信扫一扫,分享到朋友圈

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