web-dev-qa-db-ja.com

他のユーザーがユーザーリストに管理者を表示する機能を削除しますか?

モデレータのメモ:元のタイトルは「ユーザーメニューから管理者を削除」でした)

私は基本的にユーザーを追加/削除する機能を持つ編集者であるクライアント管理者ロールを作成しました。" 編集者は管理者以外の任意の新しいユーザーを作成できます "は私の新しいクライアント管理者ロールの編集や真の管理者の作成を防ぐのに役立ちましたユーザー。

ただし、理想的なのは、ユーザーを表示しているときに管理者をクライアント管理者から隠すことです。"信じる"彼らが彼らのサイトの管理者であることを望みますが、私は彼らが私の役割/ユーザーを見ることさえできないことを望みません。"administrator"彼らが"Users"パネルにいるとき、それらからロールします。

14
Carlos

こんにちは @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);
  }
}
10
MikeSchinkel

これは、現在のユーザーが管理者の役割を持っているかどうかをチェックし、そうでなければ購読者であるユーザーだけを選択する、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
        );

    }
}
10
patnz

ユーザーレベルは推奨されません したがって、このメソッドは代わりにケーパビリティをチェックします。

/** 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' );
2
Howdy_McGee

pre_user_queryアクションはユーザの問い合わせを変更するために使用できます WordPress 3.1.0以降

1
Virgo