18
févr.

Lorsqu'un développeur livre un site et son interface d'administration à un client, le but est quand même que le client en question l'utilise. Ainsi, une interface d'administration  déroutante ou comportant des éléments incompréhensibles ou inutiles devient alors anti-ergonomique et sera délaissée. Cet article montre comment supprimer des menus de la barre d'administration de Wordpress : l'admin-bar.

Le back-end de Wordpress

Si j'ai choisi de me spécialiser dans Wordpress c'est que son interface d'administration (backoffice) est vraiment bien faite. Mes clients trouvent très vite comment faire des tâches qu'ils pensaient très difficiles et cela en quelques heures de formations.

Allons encore plus loin avec la personnalisation de l'admin-bar!

Il est cependant encore possible d'améliorer un peu plus les pages d'administration :

Suppression du logo Wordpress et de son menu dans l'admin-bar de Wordpress

Une fois n'est pas coutume, nous allons passer par une action Wordpress afin de modifier l'object global $wp_admin_bar contenant le menu principal de la barre d'administration de Wordpress. Un simple print_r de cet objet nous informe de son contenu et de sa construction. Lançons cet appel au sein de l'action wp_before_admin_bar_render. Copiez et collez ce code dans votre fichier functions.php :

/**
 * Affiche le contenu de l'objet global $wp_admin_bar
 */
function deefuse_remove_admin_bar_links() {
    global $wp_admin_bar;
    print_r($wp_admin_bar);
}
add_action( 'wp_before_admin_bar_render', 'deefuse_remove_admin_bar_links' );

Observez alors le résultat : l'objet $wp_admin_bar est constituer de plusieurs sous objets. Chacun de ses sous-objet constitue le menu de l'admin-bar. Nous voyons par exemple :

[wp-logo] => stdClass Object
(
    [id] => wp-logo
    [title] => 
    [parent] => 
    [href] => http://www.bolero.dev/wp-admin/about.php
    [group] => 
    [meta] => Array([title] => À propos de WordPress)
)

[about] => stdClass Object
(
    [id] => about
    [title] => À propos de WordPress
    [parent] => wp-logo
    [href] => http://www.bolero.dev/wp-admin/about.php
    [group] => 
    [meta] => Array()
)

L'idéal serait alors de supprimer les objets dont nous ne voulons pas et ainsi, lorsque le menu sera rendu par Wordpress il en sera allégé. Les développeurs de Wordpress ont bien pensé à cela et nous offre la possibilité grâce à la fonction remove_menu contenu dans la classe WP_Admin_Bar (située dans le fichiers /wp-includes/class-wp-admin-bar.php). Il convient maintenant de modifier notre fonction ci-dessus pour supprimer ce que l'on souhaite. L'exemple suivant supprime totalement le menu avec l’icône de Wordpress ainsi que le menu avec l’icône des commentaires.

/**
 * Remove link from admin_bar
 */
function deefuse_remove_admin_bar_links() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('wp-logo');          // Remove the WordPress logo from the admin_bar
    $wp_admin_bar->remove_menu('about');            // Remove the about WordPress link from the admin_bar
    $wp_admin_bar->remove_menu('wporg');            // Remove the WordPress.org link from the admin_bar
    $wp_admin_bar->remove_menu('documentation');    // Remove the WordPress documentation link from the admin_bar
    $wp_admin_bar->remove_menu('support-forums');   // Remove the support forums link from the admin_bar
    $wp_admin_bar->remove_menu('feedback');         // Remove the feedback link from the admin_bar
    $wp_admin_bar->remove_menu('comments');         // Remove the comments link from the admin_bar
}
add_action( 'wp_before_admin_bar_render', 'deefuse_remove_admin_bar_links' );

Vous avez maintenant toutes les clés en main pour modifier cette barre d'administration !