Comment masquer mon super administrateur de la liste des utilisateurs? Mon client doit avoir la possibilité de créer des utilisateurs, mais pas de modifier/voir mon utilisateur super administrateur. Est-ce possible?
Je recommanderais ce qui suit:
Le rôle d'utilisateur Éditeur dans WordPress ne peut pas modifier les utilisateurs par défaut. Vous voudrez peut-être ajouter cette fonctionnalité aux clients que vous gardez en tant que "rédacteurs". Cela permettra à l'éditeur d'ajouter de nouveaux utilisateurs (créer de nouveaux utilisateurs), de supprimer des utilisateurs et de les modifier. Cela se fait en ajoutant des fonctionnalités au rôle Editeur avec 'add_cap
'.
Cela permet aux éditeurs de gérer les utilisateurs
function wpse104808_editor_manage_users() {
if ( get_option( 'wpse104808_add_cap_editor_once' ) != 'done' ) {
// let editor manage users
$edit_editor = get_role('editor'); // Get the user role
$edit_editor->add_cap('edit_users');
$edit_editor->add_cap('list_users');
$edit_editor->add_cap('promote_users');
$edit_editor->add_cap('create_users');
$edit_editor->add_cap('add_users');
$edit_editor->add_cap('delete_users');
update_option( 'wpse104808_add_cap_editor_once', 'done' );
}
}
add_action( 'init', 'wpse104808_editor_manage_users' );
Empêcher l'éditeur de supprimer un utilisateur administrateur
Ceci empêchera les éditeurs de supprimer, d’éditer ou d’ajouter de nouveaux administrateurs.
class wpse104808_user_caps {
// Add our filters
function wpse104808_user_caps(){
add_filter( 'editable_roles', array(&$this, 'editable_roles'));
add_filter( 'map_meta_cap', array(&$this, 'map_meta_cap'),10,4);
}
// Remove 'Administrator' from the list of roles if the current user is not an admin
function editable_roles( $roles ){
if( isset( $roles['administrator'] ) && !current_user_can('administrator') ){
unset( $roles['administrator']);
}
return $roles;
}
// If someone is trying to edit or delete an
// admin and that user isn't an admin, don't allow it
function map_meta_cap( $caps, $cap, $user_id, $args ){
switch( $cap ){
case 'edit_user':
case 'remove_user':
case 'promote_user':
if( isset($args[0]) && $args[0] == $user_id )
break;
elseif( !isset($args[0]) )
$caps[] = 'do_not_allow';
$other = new WP_User( absint($args[0]) );
if( $other->has_cap( 'administrator' ) ){
if(!current_user_can('administrator')){
$caps[] = 'do_not_allow';
}
}
break;
case 'delete_user':
case 'delete_users':
if( !isset($args[0]) )
break;
$other = new WP_User( absint($args[0]) );
if( $other->has_cap( 'administrator' ) ){
if(!current_user_can('administrator')){
$caps[] = 'do_not_allow';
}
}
break;
default:
break;
}
return $caps;
}
}
$wpse104808_custom_role = new wpse104808_user_caps();
Masquer l'administrateur de la liste d'utilisateurs
Voici 3 variantes pour masquer les utilisateurs de la liste des utilisateurs. Choisissez l'une des options suivantes:
Si vous souhaitez choisir des identifiants individuels à masquer dans la liste des utilisateurs, utilisez ceci (remplacez '2,5,7,9
' par les identifiants que vous souhaitez masquer)
add_action('pre_user_query','wpse104808_pre_user_query');
function wpse104808_pre_user_query($user_search) {
$admin_ids = '2,5,7,9'; // REPLACE THESE NUMBERS WITH IDs TO HIDE.
$user = wp_get_current_user();
$admin_array = explode($admin_ids, ',');
if ( ! in_array( $user->ID, $admin_array ) ) {
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.ID NOT IN($admin_ids)",$user_search->query_where);
}
}
// Hide all administrators from user list.
add_action('pre_user_query','wpse104808_pre_user_query');
function wpse104808_pre_user_query($user_search) {
$user = wp_get_current_user();
if ( ! current_user_can( 'manage_options' ) ) {
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
);
}
}
Liens connexes:
- Rôles et capacités
- add cap
- WP_Role::add_cap
- WP_User::add_cap
Cela devrait vous aider, je suppose (assurez-vous seulement que vous cachez le bon utilisateur):
Regardez aussi celui-ci: