當(dāng)前位置:首頁>WordPress建站>WordPress開發(fā)>WordPress如何判斷登錄用戶的角色

WordPress如何判斷登錄用戶的角色

在WordPress主題或者插件開發(fā)的過程中,經(jīng)常要遇到判斷登錄用戶的角色,并根據(jù)不同的用戶角色賦予不同的權(quán)限。下面總結(jié)兩種比較常用的判斷方法。

一、使用 current_user_can() 判斷

current_user_can() 可以根據(jù)不同角色擁有的權(quán)限來判斷用戶角色,具體的用戶權(quán)限,可以在Roles and Capabilities 中找到。

判斷用戶是否為管理員(Administrator)

if( current_user_can( 'manage_options' ) ) {
    echo 'The current user is a administrator';
}

判斷用戶是否為編輯(Editor)

if( current_user_can( 'publish_pages' ) && !current_user_can( 'manage_options' ) ) {
    echo 'The current user is an editor';
}

判斷用戶是否為作者(Author)

if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) {
    echo 'The current user is an author';
}

判斷用戶是否為投稿者(Contributor)

if( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) {
    echo 'The current user is a contributor';
}

判斷用戶是否為訂閱者(Subscriber)

if( current_user_can( 'read' ) && !current_user_can( 'edit_posts' ) ) {
    echo 'The current user is a subscriber';
}

二、使用$current_user判斷

$current_user是WordPress的一個(gè)全局變量,當(dāng)用戶登錄后,這個(gè)里面就會(huì)有用戶的角色和權(quán)限信息。

當(dāng)WordPress的init action執(zhí)行后,就可以安全的使用$current_user全局變量了。

在模板文件中判斷登錄用戶是否為作者(Author)

global $current_user;
if( $current_user->roles[0] == 'author' ) {
    echo 'The current user is an author';
}

在functions.php中判斷用戶是否為作者(Author)

add_action( 'init', 'check_user_role' );
function check_user_role() {
    global $current_user;
    if( $current_user->roles[0] == 'author' ) {
        echo 'The current user is an author';
    }
}

之所以要使用

add_action( 'init', 'check_user_role' );

是因?yàn)?current_user這個(gè)全部變量到init action執(zhí)行時(shí)才完成賦值,既然要讀它的內(nèi)容,至少要等到它的內(nèi)容準(zhǔn)備好后再讀取。functions.php的代碼先與init action執(zhí)行,所以在functions.php中直接寫global $current_user是無法獲取用戶信息的。

檢查用戶角色之前,還可以先檢查一下用戶是否登錄

<?php
      if( is_user_logged_in() ) {
          //用戶已登錄,檢查用戶角色
      }
?>

更簡單的方法

還有一種更直接的方法,例如判斷當(dāng)前用戶是否為管理員

global $current_user;
if(in_array( 'administrator', $current_user->roles )){
    echo 'administrator';
}
聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號 WPDAXUE
WordPress開發(fā)

WordPress插件開發(fā) 之 添加自動(dòng)檢測更新和一鍵升級功能

2013-1-25 6:00:00

WordPress開發(fā)

WordPress主題制作 之 判斷手機(jī)移動(dòng)設(shè)備

2013-2-25 6:10:00

5 條回復(fù) A文章作者 M管理員
  1. 七支劍

    如果需要輸出評論作者的角色應(yīng)該怎么寫

  2. wp戰(zhàn)士

    我覺得,這個(gè)地方,還可以講一下 user_can($user_id,'[condition]’); 利用用戶id,來判斷用戶的角色。

  3. —上文提到—↓
    "是因?yàn)?current_user這個(gè)全部變量到init action執(zhí)行時(shí)才完成賦值,既然要讀它的內(nèi)容,至少要等到它的內(nèi)容準(zhǔn)備好后再讀取。functions.php的代碼先與init action執(zhí)行,所以在functions.php中直接寫global $current_user是無法獲取用戶信息的。"

    ———
    我想獲取“ 新建文章”的分類,在functions.php判斷,可是如下代碼無效:if ( in_category(‘1’ ) ){//如果在分類1下}
    是不是也是要用到init action,我嘗試了,沒起作用。

    求教了,謝謝了!!

  4. 還有一個(gè)最簡單的user_id,0是游客,1是管理員~

    • 這個(gè)方法太依賴默認(rèn)數(shù)據(jù)了

?
個(gè)人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

改则县| 房产| 武城县| 迁安市| 苍梧县| 阿巴嘎旗| 扎鲁特旗| 云浮市| 林西县| 敦煌市| 信阳市| 桑日县| 漾濞| 定襄县| 湘乡市| 吉木乃县| 苏尼特右旗| 平罗县| 孝昌县| 镇安县| 海盐县| 桂东县| 车险| 微山县| 阜南县| 延吉市| 泸定县| 盘锦市| 万荣县| 恩施市| 舟山市| 北辰区| 绥德县| 久治县| 靖边县| 土默特右旗| 靖江市| 施秉县| 玛纳斯县| 宣化县| 大港区|