更新日期:2014-08-15

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

不過我們通常利用他來直接加入『角色』來判斷能不能做,例如:
[php]
if( current_user_can(‘administrator’) ) {
echo ‘這個文字只有管理員才能看的到’;
}
[/php]
或是
[php]
if( current_user_can(‘level_10’) ) {
echo ‘這個文字只有管理員才能看的到’;
}
[/php]
但是 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)
[php]
if ( current_user_can ( ‘manage_options’ ) ) {
echo ‘The current user is a administrator’ ;
}
[/php]

2.判斷用戶是否為編輯(Editor)
[php]
if ( current_user_can ( ‘publish_pages’ ) && ! ​​current_user_can ( ‘manage_options’ ) ) {
echo ‘The current user is an editor’ ;
}
[/php]

3.判斷用戶是否為作者(Author)
[php]
if ( current_user_can ( ‘publish_posts’ ) && ! ​​current_user_can ( ‘publish_pages’ ) ) {
echo ‘The current user is an author’ ;
}
[/php]

4.判斷用戶是否為投稿者(Contributor)
[php]
if ( current_user_can ( ‘edit_posts’ ) && ! ​​current_user_can ( ‘publish_posts’ ) ) {
echo ‘The current user is a contributor’ ;
}
[/php]

5.判斷用戶是否為訂閱者(Subscriber)
[php]
if ( current_user_can ( ‘read’ ) && ! ​​current_user_can ( ‘edit_posts’ ) ) {
echo ‘The current user is a subscriber’ ;
}
[/php]


此函數的官方頁:
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