(モデレータのメモ:元のタイトルは「ユーザーメニューから管理者を削除」でした)
私は基本的にユーザーを追加/削除する機能を持つ編集者であるクライアント管理者ロールを作成しました。" 編集者は管理者以外の任意の新しいユーザーを作成できます "は私の新しいクライアント管理者ロールの編集や真の管理者の作成を防ぐのに役立ちましたユーザー。
ただし、理想的なのは、ユーザーを表示しているときに管理者をクライアント管理者から隠すことです。"信じる"彼らが彼らのサイトの管理者であることを望みますが、私は彼らが私の役割/ユーザーを見ることさえできないことを望みません。"administrator"彼らが"Users"パネルにいるとき、それらからロールします。
こんにちは @Carlos:
以下をあなたのテーマのfunctions.php
ファイル、またはあなたが書いているかもしれないプラグイン内の.php
ファイルに追加してみてください (WordPress 3.1.xで動作します): -
add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
$user = wp_get_current_user();
if ($user->ID!=1) { // Is not administrator, remove administrator
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
}
}
WordPress 3.0.xをお使いの場合は、代わりにこれを試してください (WordPressが3.1まで'pre_user_query'
フックを追加していなかったので): -
add_action('pre_user_search','yoursite_pre_user_search');
function yoursite_pre_user_search($user_search) {
$user = wp_get_current_user();
if ($user->ID!=1) { // Is not administrator, remove administrator
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
}
}
これは、現在のユーザーが管理者の役割を持っているかどうかをチェックし、そうでなければ購読者であるユーザーだけを選択する、MikeSchinkelの回答に対する変更です。
add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
$user = wp_get_current_user();
if ( $user->roles[0] != 'administrator' ) {
global $wpdb;
$user_search->query_where =
str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID IN (
SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}user_level'
AND {$wpdb->usermeta}.meta_value = 0)",
$user_search->query_where
);
}
}
ユーザーレベルは推奨されません したがって、このメソッドは代わりにケーパビリティをチェックします。
/** Hide Administrator From User List **/
function isa_pre_user_query( $user_search ) {
if ( !current_user_can( 'administrator' ) ) { // Is Not Administrator - Remove Administrator
global $wpdb;
$user_search->query_where = str_replace(
'WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID IN (
SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}capabilities'
AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%' )",
$user_search->query_where
);
}
}
add_action( 'pre_user_query', 'isa_pre_user_query' );
pre_user_query
アクションはユーザの問い合わせを変更するために使用できます WordPress 3.1.0以降