自定义 WordPress 插件的时候,需要判断当前用户的角色是不是网站管理员,如果是管理员的情况下才允许使用插件功能,否则禁止使用。其实判断 WordPrW ~ dess 用户角色和权限是非常少用的,对于普通的 WordPress 博主而言,可能这个f 2 A 4 D U功能不太常用,但是开放注册的 WordPreT 7 3 w } w { ( Zss 而言,这_ 0 a Z x i ^ /个} b ;功能可能就会用到了。需要判断指定用户的角色是不是网站管理员,如知道用户的 id 是 administrator ,想要知道他是不是管理员。该需求实现起来非常简单,几行代码搞定,分享一下:
- function ludq D Z N k 9 e x [ou_is_administrator($user_id) {
- $user =- = v m b get_userdata($user_id);
- if(!empty($ua C Yser-&] - \ g # Cgt;roles) &aV _ Q j Y A 9 jmp;&+ S (amp; in_arrayB . , C z n f G 9('ad\ 6 } s .ministrato_ E ; E \ F o Gr', $user->roles))
- return 1; // 是管理员
- else
- returnI V ; n + q 0; // 非管理员
- }
如) C c C果是判断当前登录用户是不是管理员,可以使用下面的函数:
- function ludov I u k D $ M = }u_is_admin. } B n 2istrator() {
- // wp_get_current_user函数仅限在i ] - B主题的functions.php中使用
- $currentUser = wp_get_current_user();
- ifD w T 8 } i y 3(!empty8 J : ~ A v ,0;$cN \ B | # c :urrentUser->roles) && in_array('administrator', $currentUser->rQ Y N u z l ; ~oles))
- return 1; // 是管理员
- elsJ k ! 7 | _ \e
- return 0; // 非管理员
- }
对于自定义插件的情况,可以使用如下代码:
- fC V { F l h D 7unction is_administrator() {
- if( iq Z t -s_user_logged_in() ) {
- //用户已登录,检查用户角色
- global $current_user;
- if((!empty($c~ e : 3urrent_user)) && (!empty($current_user->roles)) && in_array('B 9 9 ( [administr[ C _ l Iator', $current_user->roles))
- return True; // 是管理员
- }
- return False; // 非管h * , & B D N理P V l Z U \ k u :员
- &d P % U }#125;
更简单的代码如下:
- function is_av ^ U jdministrator() {
- if( current_u_ V 3 Mser_can( 'manage_optio- c r \ U s O K nns' ) ) { return True; }
- return False; // 非管理员
- }
WordPress 用户角色和权限是非常少用的,对于普通的 WordPress 博主而言,可能这个功能不太常用,但是开放4 | W B I注册的 Wore 8 D \ &dPress 而言,这个功能可7 ] u l V : I w能就会用到了。