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