current_user_can 判斷角色

更新日期:2014-08-15

原本的判斷方式 current_user_can( $capability, $args );
$capability 參數是必需的,是指給予什麼樣的『能力』,或句話說是給他可以做什麼。
$args 參數是非必要的,是額外給予的參數,例如:current_user_can(’edit_post’,123) 就是給他可以編輯編號為123的文章。

不過我們通常利用他來直接加入『角色』來判斷能不能做,例如:

if( current_user_can('administrator') ) {
  echo '這個文字只有管理員才能看的到';
}

或是

if( current_user_can('level_10') ) {
  echo '這個文字只有管理員才能看的到';
}

但是 level_數字 的判斷方式,官方已經建議不要再使用了,大家應該避免再使用。

角色說明:

  • 管理員:administrator
  • 編輯:editor
  • 作者:author
  • 寫手:contributor
  • 訂閱者:subscriber

另一種數字等級判斷:

  • level_10 ~ level_8:只有 administrator 等級有權限
  • level_7 ~ level_3:只有 administrator、editor 等級有權限
  • level_2:只有 administrator、editor、author 等級有權限
  • level_1:只有 administrator、editor、author、contributor 等級有權限
  • level_0:只有 administrator、editor、author、contributor、subscriber 等級有權限

所以用 current_user_can(‘level_2’) ,表示對 administrator、editor、author 這三種角色判斷。

那最好的使用方式如下:
1.判斷用戶是否為管理員(Administrator)

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

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

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

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

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

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

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

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

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

此函數的官方頁:
http://codex.wordpress.org/Function_Reference/current_user_can

詳細的 Capabilities 說明:
http://codex.wordpress.org/Roles_and_Capabilities#Capabilities

User Levels 說明:
http://codex.wordpress.org/Roles_and_Capabilities#User_Levels

發佈留言