Question

( Note du modérateur: Titre original était "Supprimer l'administrateur du menu utilisateur")

J'ai créé un rôle d'administrateur client qui est essentiellement un éditeur avec possibilité d'ajouter / utilisateurs supprimer. L'article " éditeur peut créer tout nouvel utilisateur sauf administrateur " était excellent pour aider à garder mon nouveau rôle d'administrateur client à partir de l'édition ou la création d'un utilisateur admin est vrai.

Cependant, ce qui serait idéal est aux administrateurs de masquer les admins des clients quand ils sont affichés utilisateurs. Je les veux « croire » qu'ils sont l'administrateur de leur site, mais je ne veux pas qu'ils soient en mesure de voir même mon rôle / utilisateur - essentiellement cacher la « administrateur » rôle d'eux quand ils sont dans le "utilisateurs" panneau.

Était-ce utile?

La solution

Salut @Carlos:

Essayez d'ajouter ce qui suit au fichier functions.php de votre thème ou dans un fichier .php dans un plug-in que vous pourriez écrire (qui fonctionne pour 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);
  }
}

Si vous avez WordPress 3.0.x essayer cette place (depuis WordPress n'a pas ajouté le crochet 'pre_user_query' jusqu'à 3.1):

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);
  }
}

Autres conseils

Voici un mod à la réponse de MikeSchinkel qui vérifie si l'utilisateur a un rôle d'administrateur et si ce ne sélectionne que les utilisateurs qui sont abonnés.

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
        );

    }
}

Niveaux de l'utilisateur sont déconseillés , de sorte que cette méthode vérifie contre les capacités au lieu :

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

action pre_user_query peut être utilisé pour modifier la requête de l'utilisateur depuis WordPress 3.1.0

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top