在使用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