J'ai essayé d'utiliser le plug-in Front End Users, mais cela heurte quelque chose car il empêche l'accès à certaines pages front-end. Je dois donc le configurer manuellement afin que toute personne n'appartenant pas à l'un des deux noms d'utilisateur (ou rôles) ne puisse accéder à wp-admin.
Il s’agit essentiellement d’une vérification des capacités de l’utilisateur, suivie d’une redirection dans un appel de sortie. Il redirige ensuite vers le site d'où provient la demande.
<?php
! defined( 'ABSPATH' ) AND exit;
/* Plugin Name: (#66093) »kaiser« Deny Admin-UI access for certain roles */
function wpse66093_no_admin_access()
{
$redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
if (
current_user_can( 'USER_ROLE_NAME_HERE' )
OR current_user_can( '2ND_ROLE_NAME_HERE' )
)
exit( wp_redirect( $redirect ) );
}
add_action( 'admin_init', 'wpse66093_no_admin_access', 100 );
La réponse acceptée mentionne Rôle d'utilisateur mais utilise en fait la fonction pour Capacité de l'utilisateur
Voici la solution pour Rôles d’utilisateur
function wpse66094_no_admin_access() {
$redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
global $current_user;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
if($user_role === 'YOUR_USER_ROLE_HERE'){
exit( wp_redirect( $redirect ) );
}
}
add_action( 'admin_init', 'wpse66094_no_admin_access', 100 );
Basé sur la réponse fournie par @kaiser (merci btw), ceci est mon code de travail, juste dans tous les cas, quelqu'un en a besoin. Il est placé dans le fichier functions.php
.
La condition utilisée est, si l'utilisateur ne peut pas manage_options
ou edit_posts
.
function wpse66093_no_admin_access() {
$redirect = home_url( '/' );
if ( ! ( current_user_can( 'manage_options' ) || current_user_can( 'edit_posts' ) ) )
exit( wp_redirect( $redirect ) );
}
add_action( 'admin_init', 'wpse66093_no_admin_access', 100 );
Avec la réponse de @ kaiser, j'ai constaté que vous deviez utiliser le lien admin_menu sur admin_init car il se déclenche avant le contrôle! User_can_access_admin_page () dans wp-admin/includes/menu.php, sinon si l'utilisateur n'a pas accès en lecture à tableau de bord, ils obtiennent simplement le message "Vous ne disposez pas des autorisations suffisantes pour accéder à cette page". page plutôt que d'être redirigé.
Si vous supprimez la fonctionnalité read
du rôle, l'utilisateur ne pourra pas accéder au tableau de bord. Ils obtiendront l'erreur suivante:
Vous ne disposez pas des autorisations suffisantes pour accéder à cette page d’administrateur.
Motif: l'utilisateur actuel ne dispose pas de la fonctionnalité "lecture" nécessaire pour accéder à l'élément de menu "Tableau de bord".
Réf.: https://codex.wordpress.org/Roles_and_Capabilities#read