更新日期: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#CapabilitiesUser Levels 說明:
http://codex.wordpress.org/Roles_and_Capabilities#User_Levels