Retirez la capacité pour d'autres utilisateurs à View Administrator dans la liste des utilisateurs?
-
16-10-2019 - |
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.
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