Restreindre l’accès au backoffice de WordPress
WordPress permet de restreindre l’accès à l’espace d’administration pour certains profil en vue d’optimiser la sécurité de votre backoffice. Sans avoir recours à un plugin placez quelques lignes de code et appliquez vos propres règles.
Même si les profils natifs dans WordPress on déjà des autorisations définis par défaut, ils ont cependant tout accès au backoffice. Il peut donc être utile de rediriger les utilisateurs bas niveau vers les sites s’il ont utilisé principalement en font office.
Prenons le cas d’une création de compte, où les utilisateurs sont ajoutés avec des objets WP_User et avec le role ‘subscriber’ (Abonné). Ne souhaitant pas que ces utilisateurs une fois connectés puissent accéder à l’espace d’administration, on décide de les rediriger s’il tente de charger la page d’administration.
Voici quelques lignes à placer dans le fichier functions.php de votre thème actif, afin d’y définir vos règles :
/** * Prevent Access To Admin For Subscribers */ if ( is_user_logged_in() && is_admin() ) { global $current_user; get_currentuserinfo(); $user_info = get_userdata($current_user->ID); if (in_array('subscriber', $user_info->roles)){ // Redirect Home $redirect_permalink = esc_url( home_url( '/' ) ); wp_redirect($redirect_permalink); exit(); } }
Ici, lorsque l’utilisateur est connecté et qu’il se tente d’accéder à l’espace d’administration, on récupère l’objet global $current_user.
La méthode get_currentuserinfo() réaffecte l’utilisateur courant à la variable globale $current_user.
Pour obtenir les informations du profil, on récupère les meta data utilisateurs avec get_userdata().
On recherche ensuite l’existence de rôle WordPress souhaité dans les valeurs retournées pour affecter le traitement associé. Dans cet exemple une simple redirection vers la home pour les abonnés.
Une petit condition bien pratique, propre et rapide à mettre en place !
Retour au Blog