他のユーザーを追加/編集/削除できるようにするには編集者が必要です。それらにそれらの能力を与えることはこれと同様のコードで簡単です:
$editor = get_role('editor');
$editor->add_cap('edit_users');
問題は、彼らが他のユーザーを追加/編集/削除するのに必要な特権を持っているとき、彼らは管理ユーザーにそれらのすべてをやるそして/または自分自身をadminロールに昇格させることができるということです。
指定されたユーザーロールのみを追加/編集/削除できるようにする方法はありますか(ベストケースシナリオ)。あるいは別の方法として、編集者が管理者アカウントに対して何もしないようにして、それらのアカウントをリストビューから完全に隠しさえしないようにします。
WordPressが使用するget_editable_roles
という関数があります。これは、特定のユーザーがどの役割を編集できるかを決定するために使用されます。この関数のソースは以下のようになります。
function get_editable_roles() {
global $wp_roles;
$all_roles = $wp_roles->roles;
$editable_roles = apply_filters('editable_roles', $all_roles);
return $editable_roles;
}
だから、あなたが探しているものを手に入れるために* editable_roles *フィルタにフックできるかもしれないように見えます。このようなもの:
function wpse_80220_filter( $roles ) {
$current_user = wp_get_current_user();
if ( in_array( 'editor', $current_user->roles ) ) {
unset( $roles['administrator'] );
}
return $roles;
}
add_filter( 'editable_roles', 'wpse_80220_filter' );
私は上記のコードのどれもテストしていません、しかしそれを試してみて、それがトリックをするかどうか私に知らせてください!