Posted on 11 mars 2011 in Wordpress | 5 comments

Une nouveauté de WP 3.1 : la barre d'admin, bonne ou mauvaise initiative ?

(article mis à jour vendredi 11 mars 2011)

Mise à jour importante de WordPress vers 3.1. Attention avant d’effectuer cette mise à jour si vous utilisez un vieux thème.

Vous pouvez gérer dans votre profil et pour chaque utilisateur la présence ou absence de cette barre. Mais dans certains cas, la nouvelle barre d’administration imposée par WP 3.1 pose problème. Par exemple si vous désirez la désactiver totalement pour tout le monde, ou si votre blog est privé et que vous voulez empêcher l’accès au tableau de bord. La parade se fait en deux temps :

Supprimer la barre d’administration

Voir le tutoriel complet chez Yoast ici. Pour supprimer la barre pour tout le monde, ajoutez ceci dans functions.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//************************************************************
//*  Disable the Admin Bar WP 3.1 or also use css #wpadminbar
//   disable the WordPress Admin Bar for everyone
//***********************************************************//
 
add_filter( 'show_admin_bar', '__return_false' );
 
function yoast_hide_admin_bar_settings() {
?>
    <style type="text/css">
        .show-admin-bar {
            display: none;
        }
    </style>
<?php
}
 
function yoast_disable_admin_bar() {
    add_filter( 'show_admin_bar', '__return_false' );
    add_action( 'admin_print_scripts-profile.php',
         'yoast_hide_admin_bar_settings' );
}
add_action( 'init', 'yoast_disable_admin_bar' , 9 );
//************************************************************
//*  Disable the Admin Bar WP 3.1 or also use css #wpadminbar
//	 disable the WordPress Admin Bar for everyone
//***********************************************************//

add_filter( 'show_admin_bar', '__return_false' );

function yoast_hide_admin_bar_settings() {
?>
	<style type="text/css">
		.show-admin-bar {
			display: none;
		}
	</style>
<?php
}

function yoast_disable_admin_bar() {
    add_filter( 'show_admin_bar', '__return_false' );
    add_action( 'admin_print_scripts-profile.php',
         'yoast_hide_admin_bar_settings' );
}
add_action( 'init', 'yoast_disable_admin_bar' , 9 );

Interdire l’accès à vos membres vers wp-admin, le tableau de bord

Ajouter ceci dans le fichier functions.php :

1
2
3
4
5
6
7
function xyz_prevent_admin_access() {
    if (strpos(strtolower($_SERVER['REQUEST_URI']), '/wp-admin') !== false &amp;&amp; !current_user_can('Administrator')) {
        wp_redirect(get_option('siteurl'));
    }
}
 
add_action('init', 'prevent_admin_access', 0);
function xyz_prevent_admin_access() {
    if (strpos(strtolower($_SERVER['REQUEST_URI']), '/wp-admin') !== false &amp;&amp; !current_user_can('Administrator')) {
        wp_redirect(get_option('siteurl'));
    }
}

add_action('init', 'prevent_admin_access', 0);

Le cas précis que j’ai rencontré où cette barre pose problème, c’est tous les cas où on a créé un thème qui justement interdit tout accès au tableau de bord. C’est le cas des blogs privés ou des blogs qui permettent des accès différents selon le rôle des utilisateurs.

J’ai créé un tel thème pour un de mes clients : un blog privé dont les accès et donc le menu est différent selon le rôle du membre. Cette barre d’administration vient contredire tout ce que j’avais codé, alors même que j’avais justement créé une telle barre d’admin, différente selon le rôle.

Ici WP 3.1 ne tient pas compte de ces différents rôles et vient banaliser un code existant.

Afficher la barre uniquement pour le ou les administrateurs

Solution moins radicale, n’autoriser la barre que pour les aministrateurs.

1
2
3
4
5
6
7
8
9
function my_function_admin_bar(){
    return false;
}
add_filter( 'show_admin_bar' , 'my_function_admin_bar');
 
function my_function_admin_bar($content) {
    return ( current_user_can("administrator") ) ? $content : false;
}
add_filter( 'show_admin_bar' , 'my_function_admin_bar');
function my_function_admin_bar(){
    return false;
}
add_filter( 'show_admin_bar' , 'my_function_admin_bar');

function my_function_admin_bar($content) {
	return ( current_user_can("administrator") ) ? $content : false;
}
add_filter( 'show_admin_bar' , 'my_function_admin_bar');

Solution avec Plugins

Pour ceux qui détestent plonger les mains dans le cambouis de la programmation, des plugins utiles ont vu le jour:

Je n’ai pas testé ces plugins car j’ai plutôt mis en place la solution hack wp.

Désactiver la barre de Buddypress

Ajouter dans le fichier wp-config.php :

1
define( 'BP_DISABLE_ADMIN_BAR', true );
define( 'BP_DISABLE_ADMIN_BAR', true );

Sources et Ressources

Des articles utiles pour gérer cette nouvelle barre :

A suivre…