2014-09-23 154 views
0

我是PHP新手。我試圖隱藏某些用戶(編輯)的某些儀表板導航項。我已將此添加功能,這隱藏了它的所有用戶:使用參數的PHP函數參考

<?php 
function remove_menus(){ 
    remove_menu_page('edit-comments.php');   //Comments 
} 
add_action('admin_menu', 'remove_menus'); 
?> 

它說here你可以使用「current_user_can」查明某些用戶,但我不能確定如何一起使用這兩種。 到目前爲止,我已經試過:

function remove_menus(){ 
    current_user_can(
    remove_menu_page('editor', 'edit-comments.php');   //Comments 
)); 
} 

function remove_menus(){ 
current_user_can(array(
remove_menu_page('editor', 'edit-comments.php');   //Comments 
)); 
} 

..但是從尋找其他的功能,他們似乎在括號中與=>其間所以我假設我使用這個功能是錯誤的。

任何幫助,將不勝感激,謝謝。

+0

我認爲這是自行編寫的代碼,因此我正在建議你不要遵循該路線 - 然後我意識到它是Wordpress。對不起,WP是如此的複雜和不合理,它的名字讓我很頭疼:/ – moonwave99 2014-09-23 10:30:56

+1

仔細看看你鏈接到的頁面上的例子。你應該像這樣使用它:'if(current_user_can('edit_pages'))remove_menu_page(...)'。另外看看你可以傳遞給函數的可能功能列表,我不知道「edit_pages」是否是你正在尋找的功能。 – deceze 2014-09-23 10:34:25

+0

讓'remove_menus'更通用 - 比如說,允許許多不同的參數,這些參數允許你刪除不同的菜單 - 或者,可以使函數名稱更具體,例如, 'remove_edit_comments_menu'? – 2014-09-23 10:42:16

回答

0

第一個答案很簡單,使用邏輯「或」運算符:

  <?php 
      function remove_menus(){ 
       if(current_user_can('editor') || current_user_can('administrator')) { // stuff here for admins or editors 
        remove_menu_page('edit-comments.php'); //stuff here for editor and administrator 
       } 
      } ?> 

如果您要檢查兩個以上的角色,您可以檢查當前用戶的角色是角色數組裏面,例如:

 <?php 
     function remove_menus(){ 
      $user = wp_get_current_user(); 
      $allowed_roles = array('editor', 'administrator', 'author'); 
      if(array_intersect($allowed_roles, $user->roles)) { 
       remove_menu_page('edit-comments.php'); //stuff here for allowed roles 
      } 
     } ?> 

但是,current_user_can不僅可以用於用戶角色名稱,還可以用於功能。所以,一旦這兩個編輯和管理員可以編輯頁面,你的生活可以更容易檢查該功能:

 <?php 
     function remove_menus(){ 
      if(current_user_can('edit_others_pages')) { 
       remove_menu_page('edit-comments.php');// stuff here for user roles that can edit pages: editors and administrators 
      } 
     } 
     ?> 

有能力上的更多信息一看here

+0

謝謝!頂級的作品是一種享受。 – RachJenn 2014-09-23 11:17:53