vendredi 25 septembre 2026

À propos

Contact

Tips

Masquer la barre d’administration selon le rôle de l’utilisateur

Un espace client avec la barre noire de WordPress en haut de l'écran, ça détonne. Un seul filtre suffit à la masquer pour les rôles concernés.

Par Clément Hadrot • 13 août 2021 • 4 min de lecture • Aucun commentaire
Masquer la barre d'administration selon le rôle de l'utilisateur

Sur un espace membre où des clients d’une plateforme de formation se connectaient pour suivre leur progression, la barre noire d’administration en haut de chaque page cassait totalement l’illusion d’un espace dédié. Pire : elle exposait des liens vers l’administration WordPress à des utilisateurs qui n’avaient strictement aucune raison d’y accéder.

Le filtre show_admin_bar() — et son pendant filtrable show_admin_bar — permet de désactiver cette barre selon le rôle de l’utilisateur connecté, en une poignée de lignes, sans jamais toucher à ses capacités réelles ni casser l’accès à son profil.

Le filtre show_admin_bar

WordPress expose un filtre du même nom que la fonction, qui reçoit un booléen et permet de le modifier selon le contexte. Il s’accroche généralement sur init, en vérifiant les rôles de l’utilisateur courant.

function plateforme_masquer_barre_admin() {
    $utilisateur = wp_get_current_user();
    $roles_sans_barre = array( 'abonne', 'client_formation' );

    if ( array_intersect( $roles_sans_barre, (array) $utilisateur->roles ) ) {
        show_admin_bar( false );
    }
}
add_action( 'init', 'plateforme_masquer_barre_admin' );

L’appel à show_admin_bar( false ) à l’intérieur d’une fonction accrochée sur init est la méthode recommandée : appeler cette fonction plus tard, par exemple dans wp_head, ne fonctionne pas toujours car WordPress a déjà décidé d’afficher ou non la barre à ce stade.

Ne pas confondre masquage et suppression de droits

Un piège classique consiste à croire que masquer la barre revient à retirer des capacités à l’utilisateur. Ce n’est pas le cas : show_admin_bar( false ) agit uniquement sur l’affichage visuel côté front-end. Un utilisateur qui aurait, par erreur de configuration, la capacité edit_posts pourrait toujours accéder à /wp-admin/ directement en tapant l’URL, barre masquée ou non.

  • Le masquage de la barre est un confort d’affichage, pas une mesure de sécurité.
  • La restriction d’accès à l’administration se gère séparément, via une redirection sur admin_init par exemple.
  • Les deux mesures se complètent mais ne se remplacent pas l’une l’autre.

Rediriger les rôles concernés hors de l’administration

L'essentiel à retenir : show_admin_bar filtre l'affichage globalement ; Le test se fait sur le rôle de l'utilisateur connecté ; L'accès au profil doit rester possible autrement

Pour un espace membre où les abonnés n’ont légitimement rien à faire dans /wp-admin/, une redirection complète les complète utilement : elle évite qu’un utilisateur curieux ne tombe sur un tableau de bord vide et déroutant.

function plateforme_rediriger_hors_admin() {
    if ( ! is_admin() || wp_doing_ajax() ) {
        return;
    }
    $utilisateur = wp_get_current_user();
    if ( in_array( 'client_formation', (array) $utilisateur->roles, true ) ) {
        wp_safe_redirect( home_url( '/mon-compte/' ) );
        exit;
    }
}
add_action( 'admin_init', 'plateforme_rediriger_hors_admin' );

La vérification wp_doing_ajax() est indispensable : sans elle, toute requête AJAX émise depuis le front-end par ce même utilisateur (formulaire, panier, favoris) serait interceptée et redirigée par erreur, cassant des fonctionnalités qui n’ont rien à voir avec l’administration.

Conserver un accès simple au profil

Une fois la barre masquée, l’utilisateur perd son accès habituel à « Modifier mon profil ». Il reste indispensable de proposer un lien équivalent ailleurs dans l’interface du site, généralement dans le tableau de bord de l’espace membre lui-même.

<a href="<?php echo esc_url( admin_url( 'profile.php' ) ); ?>">Modifier mon profil</a>

Cette page reste accessible même si l’administrateur a redirigé le reste de /wp-admin/, à condition d’exclure explicitement profile.php de la redirection ci-dessus, par exemple avec une vérification sur $GLOBALS['pagenow'].

Sur les espaces membres, je préfère toujours créer une page « Mon compte » côté front-end plutôt que de renvoyer vers profile.php : l’expérience reste cohérente, et le client ne voit jamais la moindre trace de l’interface d’administration.

En résumé

Le filtre show_admin_bar, combiné à un test sur les rôles de l’utilisateur, masque proprement la barre noire pour les profils qui n’en ont pas l’usage. Ce réglage reste purement visuel : sur un espace sensible, il doit être complété par une vraie redirection hors de l’administration et par un accès alternatif au profil, pensé côté front-end.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi