怎么添加自定義角色和權(quán)限? – wordpress開(kāi)發(fā)

    有關(guān) WordPress 角色和權(quán)限的知識(shí),WordPress 強(qiáng)大的用戶(hù)角色和權(quán)限管理系統(tǒng)可以讓我們隨時(shí)創(chuàng)建復(fù)雜的項(xiàng)目

    wordpress自帶的角色只有幾個(gè),在復(fù)雜的需求下很難滿(mǎn)足,那就自己創(chuàng)建自定義的角色和權(quán)限吧。

    需要注意的是,在WordPress中是不能直接在后臺(tái)添加新的用戶(hù)組,而是需要通過(guò)WordPress的角色和權(quán)限API來(lái)添加用戶(hù)角色。

    怎么添加自定義角色和權(quán)限? - wordpress開(kāi)發(fā)

    請(qǐng)備份數(shù)據(jù)庫(kù),謹(jǐn)慎操作

    方案一

    以修改“訂閱者”為“忠實(shí)會(huì)員”為例,復(fù)制下面的代碼到 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'] = '忠實(shí)會(huì)員';
        $wp_roles->role_names['subscriber'] = '忠實(shí)會(huì)員';
    }
    add_action('init', 'wps_change_role_name');

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

    方案二

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

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

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

    方案三

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

    /*
    $role_name:相當(dāng)于角色的ID;
    $display_name:角色的顯示名稱(chēng),支持本地化字符;
    $capabilities:該角色應(yīng)具有的能力組成的數(shù)組(能力ID/名稱(chēng)為ID,值為值組成的數(shù)組)
    */
    add_role( $role_name, $display_name, $capabilities );
    add_role( 'pama', '銀牌會(huì)員', 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' );

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

    賦予權(quán)限

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

    刪除權(quán)限

    此函數(shù)為自行構(gòu)造,僅供測(cè)試

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

    刪除角色

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

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

    代碼中 2 至 5 行為想要?jiǎng)h除的默認(rèn)角色,依次為訂閱者、投稿者、作者、編輯,可根據(jù)需要?jiǎng)h減之。

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

    WordPress的權(quán)限類(lèi)

    介紹WordPress 用于角色和權(quán)限幕后工作的三個(gè)類(lèi),以及這些類(lèi)提供的接口,我們可以在插件中進(jìn)行高級(jí)權(quán)限管理。這三個(gè)類(lèi)是:

    • WP_Roles
    • WP_Role
    • WP_User

    這三個(gè)類(lèi)的源代碼可以在?wp-includes/capabilities.php?中找到,源代碼注釋寫(xiě)得很詳細(xì),下面總結(jié)一下怎樣使用這些類(lèi):

    WP_Roles 類(lèi)

    WP_Roles 是一般的角色管理類(lèi),當(dāng)我們?cè)诓寮惺褂玫臅r(shí)候,可以不用實(shí)例化一個(gè)新的對(duì)象,而是直接使用 WordPress 默認(rèn)創(chuàng)建的一個(gè)全局對(duì)象?$wp_roles,可以在任何地方使用它,只要事先聲明global?即可:

    global $wp_roles;

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

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

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

    global $wp_roles;
    
    //通過(guò)角色名稱(chēng)得到一個(gè)角色,和get_role()功能一樣
    $wp_roles->get_role( $role );

    還可以得到一個(gè)可用角色列表,含有角色的名稱(chēng)和角色的顯示名稱(chēng)。這個(gè)對(duì)想為用戶(hù)提供一個(gè)接口,改變權(quán)限分配時(shí)候非常有用的。

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

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

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

    WP_Role 類(lèi)

    這是一個(gè)非常簡(jiǎn)單的類(lèi),它的功能就是添加和刪除權(quán)限。

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

    WP_User類(lèi)

    這個(gè)類(lèi)可以管理每個(gè)用戶(hù)的角色和權(quán)限,這意味著可以為一個(gè)特定具體的用戶(hù)分配多個(gè)角色,或者為當(dāng)前用戶(hù)添加特定的權(quán)限,不論他目前是什么角色。

    首先需要獲取用戶(hù)對(duì)象來(lái)操縱它的角色和權(quán)限:

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

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

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

    一旦得到了用戶(hù)對(duì)象,就可以為這個(gè)用戶(hù)的添加另一個(gè)角色,而無(wú)需修改他目前的角色,這意味著用戶(hù)可以有多個(gè)角色:

    $user->add_role( $role_name );

    也可以使用?remove_role(),來(lái)為該用戶(hù)刪除某個(gè)角色:

    $user->remove_role( $role_name );

    還可以為該用戶(hù)設(shè)置一個(gè)角色,這意味著該用戶(hù)將被刪除當(dāng)前所有的角色,并分配一個(gè)新的角色:

    $user->set_role( $role_name );

    對(duì)于權(quán)限操作,也有很多的方法來(lái)做各種事情:

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

    角色和權(quán)限總結(jié)

    以上就是所有有關(guān) WordPress 角色和權(quán)限的知識(shí),WordPress 強(qiáng)大的用戶(hù)角色和權(quán)限管理系統(tǒng)可以讓我們隨時(shí)創(chuàng)建復(fù)雜的項(xiàng)目。

    權(quán)限表一覽

    內(nèi)置權(quán)限表一覽 – wordpress開(kāi)發(fā)

    不同的用戶(hù)與權(quán)限

    不同的用戶(hù),不同的權(quán)限-WordPress開(kāi)發(fā)

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來(lái)源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無(wú)意侵害您的權(quán)益,請(qǐng)發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    ?
    購(gòu)物車(chē)
    優(yōu)惠劵
    搜索
    主站蜘蛛池模板: 国产成人精品一区二三区熟女| 亚洲综合一区二区| 一区二区三区四区精品| 日本一区二区三区在线网| 日韩人妻无码免费视频一区二区三区 | 另类一区二区三区| 中文字幕精品一区二区| 国产一区二区三区在线看| 亚洲国产欧美国产综合一区| 国精品无码A区一区二区| 国模视频一区二区| 中文无码一区二区不卡αv| 国精品无码一区二区三区左线| 日韩精品电影一区| 国产精品成人一区二区三区| 亚洲AV成人一区二区三区AV| 国产91精品一区二区麻豆亚洲| 精品欧洲AV无码一区二区男男| 国产一区二区三区久久| 国产精品视频一区二区噜噜| 精品一区二区三区四区| 亚洲av无码一区二区三区网站 | 日韩免费无码一区二区视频| 国产成人无码精品一区二区三区 | 国产成人精品一区二区三区无码| 日韩在线视频一区| 无码AⅤ精品一区二区三区| 久久一区二区免费播放| 精品视频一区二区三区在线观看 | 国产丝袜美女一区二区三区| 精品日产一区二区三区手机| 日韩亚洲AV无码一区二区不卡| 少妇激情一区二区三区视频| 99久久无码一区人妻a黑| 老湿机一区午夜精品免费福利| 国产熟女一区二区三区四区五区 | 伊人激情AV一区二区三区| 国产精品无码一区二区三区不卡| 精品一区二区三区波多野结衣| 国产福利电影一区二区三区,日韩伦理电影在线福 | 少妇精品无码一区二区三区|