WordPress

針對角色隱藏WordPress後台的欄位

在使用WordPress架站的時候,一般會使用內建的角色給客戶,但我自己的習慣是釐清客戶需求,多建立一組全新的角色出來,這樣既不用改動到原生的角色權限,也能很好的客製需求。

在這樣設定後,一些共用的欄位當然也必須隱藏起來,避免客戶看到亂調整,這時候針對他們角色去隱藏就沒問題了。
首先安裝 Code Snippet 這個外掛,在介面建立一組新的程式碼片段,然後把下面的程式碼貼上去就可以了。

記得填入自己新建的角色ID,然後再依照需求去隱藏欄位。下面要記得勾選「僅執行於管理後台區域」。

 

 


add_action( 'admin_head', function () { 
//ref: https://wp-mix.com/wordpress-check-user-roles/
  function check_user_role($roles, $user_id = null) {
	if ($user_id) $user = get_userdata($user_id);
	else $user = wp_get_current_user();
	if (empty($user)) return false;
	foreach ($user->roles as $role) {
		if (in_array($role, $roles)) {
			return true;
		}
	}
	return false;
  }
  $specialUserID = array("1234", "9999"); //特定的使用者(ID)

  if (check_user_role(array('subscriber','contributor','author','editor','translater','wp_adm','wp_tea'), get_current_user_id() ) || in_array(get_current_user_id(), $specialUserID) ){
  ?>
    <style>
/*
		.error, #toplevel_page_wpassetcleanup_getting_started, #toplevel_page_smush,#menu-tools,#menu-settings,#toplevel_page_icwp-wpsf,.submenu-ldlms-assignments,.submenu-ldlms-quizzes,.submenu-ldlms-questions,.submenu-ldlms-certificates,.submenu-ldlms-groups,#menu-plugins,#toplevel_page_Wordfence,#toplevel_page_loco,.wp-submenu-wrap.wp-first-item,#adminmenu .wp-submenu li:nth-child(2) ,#adminmenu .wp-submenu li:nth-child(8) ,#adminmenu .wp-submenu li:nth-child(3) {
    display: none;
}
*/
/* --------------- 隱藏使用者角色選取 --------------*/
		
    </style>
  <?php 
  } //if 非管理員
  if (check_user_role(array('administrator'), get_current_user_id() )){
  ?>
    <style>
    </style>
  <?php 
  } //if 非管理員
  
} ); //admin_head

 

留言
回到頂端