zoukankan      html  css  js  c++  java
  • WordPress用户角色与用户能力/权限

    WordPress用户角色(user roles)是WP或者其它插件增加的,可以让网站管理员(网站管理员也是一种角色)来方便的管理用户的权限/能力(Capabilities,一般情况下,一种角色不止有一种能力,所以用复数),使用免费的插件,可以方便的管理每种角色的能力,简单的理解是:角色具有某些能力,是某些能力的代称。

    WordPress用户角色与用户能力/权限(Roles and Capabilities)系统是自Wordpress2.0起被逐步完善的。

    基本的用户角色与用户能力/权限

    WORDPRESS自身的用户角色

    仅指Wordpress安装时就有的几种用户角色(所列为角色名称):

    • Subscriber:订阅者
    • Contributor :投稿者
    • Author :作者
    • Editor :编辑
    • Administrator :管理员

    此外,如果启用了Wordpress多站,将会多出一种用户角色:Super Admin(超级管理员)。

    WORDPRESS自身的用户能力/权限

    WordPress在安装完毕之后,会为各个用户角色分配默认的用户能力/权限,各个用户能力/权限的名称(ID)以及其含义此不赘述。

    WORDPRESS自身的用户能力/权限的用途

    广泛,可以限定用户权限,这是明摆的事情,例如:用在插件或者主题的设置后台,以限制可看到菜单项并进行某些操作的用户组;限制可以发表/修改/删除自己的文章(如果有权限发表的话)/别人的文章等等。

    有时候在输出某些内容或者存储某些内容之前,有必要检查下当前已登录用户的权限,这时候就需要进行权限检查了:

    1
    2
    3
    
    if ( current_user_can( $capability ) ) {
    //为有权限的用户做些什么
    }

    还可以在循环中检查当前用户是否有对某个对象的操作能力:

    1
    
    current_user_can( 'edit_post', $post_id );

    还可以对文章(广义上的文章,泛指各种文章类型的文章)的作者的权限进行检查:

    1
    2
    3
    
    if ( author_can( $post, $capability ) ) {
    // 如果作者有相应权限,怎么着
    }

    比如,有某种权限了,就直接发表,否则就置为草稿或者待审状态等。

    以用户为对象的角色、能力/权限操作

    在Wordpress中,只要角色之间的能力互不冲突(一般情况下不会发生这种事情),同一个用户可以同时有多种角色。

    在获取用户对象之后,可以 为某个用户添加一种角色:

    1
    
    $user->add_role( $role_name );

    如果想限定某用户只有一种角色,可以用:

    1
    
    $user->set_role( $role_name );

    移除用户的某个角色:

    1
    
    $user->remove_role( $role_name );

    用户的能力/权限操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    // 检查给定用户是否有某种能力/权限或者角色
    if ( $user->has_cap( $cap_name ) ) {
    // 做点儿啥
    }
    // 为给定用户添加一种能力/权限
    $user->add_cap( $cap_name );
    // 为给定用户移除一种能力/权限
    $user->remove_cap( $cap_name );
    // 为给定用户移除全部能力
    $user->remove_all_caps();

    以网站为对象的角色、能力/权限操作

    注意:进行这些操作的时候,最后声明下全局变量global $wp_roles;,然后以$wp_roles->add_role();
    、 $wp_roles->remove_role();的方式进行操作,特别是在插件中使用时。

    添加用户角色

    1
    2
    3
    4
    5
    6
    
    /*
    $role_name:相当于角色的ID;
    $display_name:角色的显示名称,支持本地化字符;
    $capabilities:该角色应具有的能力组成的数组(能力ID/名称为ID,值为值组成的数组)
    */
    add_role( $role_name, $display_name, $capabilities );

    示例:

    1
    
    add_role( 'pama', '银牌会员', array('read'=>true,'level_0'=>true) );

    删除用户角色

    1
    
    remove_role( $role_name );

    示例:

    1
    
    remove_role( 'pama' );

    获取用户角色对象

    1
    
    get_role( $role );

    添加自定义的用户能力/权限

    1
    2
    3
    4
    
    // 获取 "pama" 角色对象
    $role = get_role( 'author' );
    // 为该角色对象添加 "sleep" 能力
    $role->add_cap( 'sleep' );

    参考页面:http://codex.wordpress.org/Roles_and_Capabilities

  • 相关阅读:
    go语言-值类型与引用类型
    MongoDB小东西
    2018年12月29日
    父进程结束,其子进程不会结束,会挂到init进程下
    python处理Windows平台上路径有空格
    python print 在windows上 出现 Bad file descriptor error
    docker私有镜像仓库搭建
    docker 在centos6 和centos7上的区别
    virtualbox 设置centos7 双网卡上网
    Centos6.6安装docker
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/7445463.html
Copyright © 2011-2022 走看看