怎么添加自定義角色和權限? - wordpress開發

    有關 WordPress 角色和權限的知識,WordPress 強大的用戶角色和權限管理系統可以讓我們隨時創建復雜的項目

    wordpress自帶的角色只有幾個,在復雜的需求下很難滿足,那就自己創建自定義的角色和權限吧。

    需要注意的是,在WordPress中是不能直接在后臺添加新的用戶組,而是需要通過WordPress的角色和權限API來添加用戶角色。

    怎么添加自定義角色和權限? - wordpress開發

    請備份數據庫,謹慎操作

    方案一

    以修改“訂閱者”為“忠實會員”為例,復制下面的代碼到 wordpress 主題根目錄下的 function.php 文件<?php下面。

    function wps_change_role_name() {
        global $wp_roles;
        if ( ! isset( $wp_roles ) )
            $wp_roles = new WP_Roles();
        $wp_roles->roles['subscriber']['name'] = '忠實會員';
        $wp_roles->role_names['subscriber'] = '忠實會員';
    }
    add_action('init', 'wps_change_role_name');

    對照修改第 5、6 行中你想要編輯的角色英文名稱(小寫字母)所對應的中文名稱,保存即可。

    方案二

    新建?自定義角色,例如:VIP用戶,將以下代碼添加至主題根目錄下的functions.php文件的<?php下保存。

    // 新建VIP用戶角色
    
    add_action( 'admin_init', 'remove_shop_caps');
    function remove_shop_caps() {
        // 首先獲取訂閱者角色。
        $subscriber = get_role('subscriber');
        // 然后基于訂閱者角色的權限新建一個角色。
        $vip = add_role('vip','VIP用戶',$subscriber->capabilities);
    }
    //刪除“VIP用戶”角色
    function wps_remove_role() {
        remove_role( 'vip' );
    }
    add_action( 'init', 'wps_remove_role' );

    以上兩段代碼使用后即可刪除,無需留在 functions.php 文件中。

    方案三

    新建?自定義角色,例如:新角色,添加新角色,并為其賦予分類管理、多媒體文件上傳、文章編輯等基本權限。

    /*
    $role_name:相當于角色的ID;
    $display_name:角色的顯示名稱,支持本地化字符;
    $capabilities:該角色應具有的能力組成的數組(能力ID/名稱為ID,值為值組成的數組)
    */
    add_role( $role_name, $display_name, $capabilities );
    add_role( 'pama', '銀牌會員', array('read'=>true,'level_0'=>true) );
    

    將以下代碼添加至主題根目錄下的functions.php文件的<?php下保存。

    function tp_add_role() {
        add_role( 'newbie', '新角色',
                 array(
                      'read',
                      'edit_posts',
                      'delete_posts',
                      'manage_categories',
                      'upload_files',
                      )
        );
    }
    add_action( 'init', 'tp_add_role' );
    //刪除“新角色”角色
    function wps_remove_role() {
        remove_role( 'newbie' );
    }
    add_action( 'init', 'wps_remove_role' );

    以上兩段代碼使用后即可刪除,無需留在 functions.php 文件中。

    賦予權限

    //獲取 "author" 的角色對象
    $role = get_role( 'author' );
    
    //為角色對象添加 "organize_gallery" 權限
    $role->add_cap( 'organize_gallery' );

    刪除權限

    此函數為自行構造,僅供測試

    //獲取 "author" 的角色對象
    $user = get_role( 'author' );
    
    // 為給定用戶移除一種能力/權限
    $user->remove_cap( $cap_name );
    // 為給定用戶移除全部能力
    $user->remove_all_caps();

    刪除角色

    刪除訂閱者、投稿者、作者、編輯等不需要的默認角色。

    function wps_remove_role() {
        remove_role( 'contributor' );
        remove_role( 'subscriber' );
        remove_role( 'author' );
        remove_role( 'editor' );
    }
    add_action( 'init', 'wps_remove_role' );

    代碼中 2 至 5 行為想要刪除的默認角色,依次為訂閱者、投稿者、作者、編輯,可根據需要刪減之。

    使用后即可刪除,無需留在 functions.php 文件中。

    WordPress的權限類

    介紹WordPress 用于角色和權限幕后工作的三個類,以及這些類提供的接口,我們可以在插件中進行高級權限管理。這三個類是:

    • WP_Roles
    • WP_Role
    • WP_User

    這三個類的源代碼可以在?wp-includes/capabilities.php?中找到,源代碼注釋寫得很詳細,下面總結一下怎樣使用這些類:

    WP_Roles 類

    WP_Roles 是一般的角色管理類,當我們在插件中使用的時候,可以不用實例化一個新的對象,而是直接使用 WordPress 默認創建的一個全局對象?$wp_roles,可以在任何地方使用它,只要事先聲明global?即可:

    global $wp_roles;

    我們上面使用的函數?add_role()?和?remove_role()?實際上是?$wp_roles->add_role()?和?$wp_roles->remove_role()?的別名。因此,我們也可以直接使用?$wp_roles?對象添加和刪除角色,例如:

    global $wp_roles;
    //添加新角色,和add_role()功能一樣
    $wp_roles->add_role( $role, $display_name, $capabilities )
    
    //刪除角色, 和remove_role()功能一樣
    $wp_roles->;remove_role( $role );

    同樣也可以使用這種方法得到一個角色:

    global $wp_roles;
    
    //通過角色名稱得到一個角色,和get_role()功能一樣
    $wp_roles->get_role( $role );

    還可以得到一個可用角色列表,含有角色的名稱和角色的顯示名稱。這個對想為用戶提供一個接口,改變權限分配時候非常有用的。

    global $wp_roles;
    
    //得到一個值列表包括 $role_name => $display_name
    $roles = $wp_roles->get_names();

    最后可以使用?$wp_roles?添加和刪除權限,此對象幾乎包括所有的角色和權限操作。

    global $wp_roles;
    
    //為角色$role添加權限$cap
    $wp_roles->add_cap( $role, $cap );
    
    //為角色$role刪除權限$cap
    $wp_roles->remove_cap( $role, $cap );
    
    //例子
    $wp_roles->add_cap( 'administrator', 'manage_galleries' );
    $wp_roles->remove_cap( 'subscriber', 'view_galleries' );

    WP_Role 類

    這是一個非常簡單的類,它的功能就是添加和刪除權限。

    //得到角色對象
    $role_object = get_role( $role_name );
    
    //為角色對象添加權限$cap
    $role_object->add_cap( $capability_name );
    
    //為角色對象刪除權限$cap
    $role_object->remove_cap( $capability_name );

    WP_User類

    這個類可以管理每個用戶的角色和權限,這意味著可以為一個特定具體的用戶分配多個角色,或者為當前用戶添加特定的權限,不論他目前是什么角色。

    首先需要獲取用戶對象來操縱它的角色和權限:

    //通過用戶ID得到用戶對象
    $user = new WP_User( $id );
    
    //或者通過用戶名
    $user = new WP_User( null, $name );

    我們可以通過用戶ID或用戶名得到一個用戶對象。對于第二種方法,第一個參數必須是空的(null或空字符串),如:

    //通過ID得到管理員對象
    $admin = new WP_User( 1 );
    
    //通過用戶名得到管理員對象
    $admin = new WP_User( null, 'admin' );

    一旦得到了用戶對象,就可以為這個用戶的添加另一個角色,而無需修改他目前的角色,這意味著用戶可以有多個角色:

    $user->add_role( $role_name );

    也可以使用?remove_role(),來為該用戶刪除某個角色:

    $user->remove_role( $role_name );

    還可以為該用戶設置一個角色,這意味著該用戶將被刪除當前所有的角色,并分配一個新的角色:

    $user->set_role( $role_name );

    對于權限操作,也有很多的方法來做各種事情:

    //檢查該用戶是否具有某種權限或角色名稱
    if ( $user->has_cap( $cap_name ) ) {
        //做一些事
    }
    
    //為用戶添加權限
    $user->add_cap( $cap_name );
    
    //為用戶刪除權限
    $user->remove_cap( $cap_name );
    
    //刪除用戶所有權限
    $user->remove_all_caps();

    角色和權限總結

    以上就是所有有關 WordPress 角色和權限的知識,WordPress 強大的用戶角色和權限管理系統可以讓我們隨時創建復雜的項目。

    權限表一覽

    怎么添加自定義角色和權限? - wordpress開發-Npcink
    怎么添加自定義角色和權限? - wordpress開發-Npcink

    內置權限表一覽 - wordpress開發

    不同的用戶與權限

    怎么添加自定義角色和權限? - wordpress開發-Npcink
    怎么添加自定義角色和權限? - wordpress開發-Npcink

    不同的用戶,不同的權限-WordPress開發

    成人內容警告代碼 - wordpress開發

    2020-3-6 8:07:00

    如何自定義logo? - wordpress主題開發

    2019-8-12 18:06:04

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 亚洲欧洲一区二区三区| 亚洲国产成人久久一区WWW| 中文字幕在线播放一区| 欧洲精品一区二区三区在线观看| 无码精品蜜桃一区二区三区WW| 无码aⅴ精品一区二区三区浪潮 | 亚洲丶国产丶欧美一区二区三区| 丝袜人妻一区二区三区网站| 日韩色视频一区二区三区亚洲| 亚洲国产成人精品无码一区二区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲AV无码一区二区三区在线| 福利国产微拍广场一区视频在线| 亚洲AV无码一区二区三区系列| 精品3d动漫视频一区在线观看| 精品一区二区三区四区在线播放| 国产福利精品一区二区| 精品成人一区二区三区四区| 国产精品久久亚洲一区二区| 无码一区二区三区AV免费| 国产吧一区在线视频| 91久久精品无码一区二区毛片 | 精品一区二区三区在线观看l| 性色A码一区二区三区天美传媒| 免费一区二区无码东京热| 日韩精品无码一区二区视频 | 91成人爽a毛片一区二区| 中文字幕一精品亚洲无线一区| 香蕉视频一区二区三区| 亚洲国产激情一区二区三区| 国产成人无码aa精品一区| 国产在线一区视频| 视频一区在线免费观看| 视频一区二区中文字幕| 亚洲一区二区高清| 国产一区二区精品久久凹凸| 亚洲一区二区三区自拍公司| 亚洲国产综合精品中文第一区| 亚洲日本一区二区| 精品国产一区二区三区香蕉| 色欲AV蜜桃一区二区三|