Tout savoir sur WordPress
Tutoriel WordPress

Rendre la barre d’administration visible uniquement pour les admins

Par défaut, la barre d’administration de WordPress est proposée à tous les membres. Découvrez la méthode à suivre pour rendre visible la barre d’administration uniquement aux administrateurs de votre site.

Introduite dans WordPress 3.3, la barre d’administration est une nouvelle version de la très controversée “Toolbar” qui avait été implantée dans WordPress 3.0.

Si vous pensez que cette fonctionnalité est seulement utile pour les administrateurs de votre site, cette astuce va vous permettre de restreindre la visibilité de la barre d’administration aux administrateurs de votre site.

Copier le code ci-dessous dans le fichier functions.php présent à la racine de votre thème :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


if (!current_user_can('manage_options')) {
	
    remove_action( 'admin_footer', 'wp_admin_bar_render', 1000 );
    remove_action('wp_footer', 'wp_admin_bar_render', 1000);

    function remove_admin_bar_style() {  
  	echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>';	
    }
    add_filter('admin_head','remove_admin_bar_style');

    function remove_admin_bar_style_frontend() {
        echo '<style>html{ padding-top: 0px !important; }</style>';
    }
    add_filter('wp_head','remove_admin_bar_style_frontend');
}

[/pastacode]

Cet article a été mis à jour il y a 4458 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

13 Commentaires

  1. Je me demande pourquoi nous n’avons pas la possibilité de choisir l’affichage de cette barre en standard dans le BO WordPress. En effet, lorsque l’on fait un site e-commerce (avec Jigoshop par exemple), lorsque l’internaute devient client, il possède de ce fait un compte et peut potentiellement accéder au backoffice via la barre, bof…

    Merci je vais mettre en œuvre ton code très rapidement :)

  2. @DUPRÉ DAVID : En effet, je suis d’accord avec toi. C’est une option qui devrait être proposer dans les réglages.

    En espérant que cela soit possible nativement dans une prochaine version de WordPress.

    • la profile.php “pour abonne” est toujours accessible aussi via le lien dans les commentaire (Connecté(e) en tant que …)

  3. bonsoir, je ne comprends pas ça ne l’enlève pas a mes abonnés et en plus ces mêmes abonnés ont accès à mes fichier multimédias. quelqu’un a déjà eus le même souci??
    merci

  4. @MARCELUS : Je viens de re-tester le code et ça fonctionne !

    L’avez-vous bien ajouté dans le fichier functions.php présent à la racine de votre thème ?.

  5. oui oui j’utilise souvent ce fichier functions.php, c’est vraiment bizarre j’ai désactivé buddypress et les autres extensiosn rien y fait

  6. ce code marche par contre

    add_filter( 'show_admin_bar' , 'my_admin_bar') ;
     return false
    function my_admin_bar(){
      $cc_user = wp_get_current_user();
      if (empty($cc_user->roles) || in_array('subscriber', $cc_user->roles)) {
        return false;
      }
      return true;
    }
    
  7. @MARCELUS : En fait, l’astuce était dédié uniquement à la désactivation de l’admin bar du côté administration.

    J’avoue que j’aurai dû le préciser. Du coup, j’ai mis à jour le code pour pouvoir aussi supprimer l’admin bar du côté front-office.

    Cela évitera toute confusion :)

  8. Bonjour et merci pour cette astuce. Elle a fonctionné mais j’ai quand même eu une petite frayeur.
    En mettant à jour mon functions.php une page blanche est apparue.
    Heureusement après un refresh aucun bug n’est à déclarer.

    Cordialement

  9. Bon et bien à priori ce bug n’est pas anodin puisque je retrouve cette page blanche à chaque fois que je créé un article ou le modifie, dès qu’un commentaire est posté, etc.

    J’ai fait ta manip’ sur deux sites utilisant le même thème et les mêmes widgets sauf qu’un seul des deux me renvoie cette erreur…
    Une idée d’où cela peut venir ?

    Cordialement