Tout savoir sur WordPress

Ajouter/Supprimer des éléments de la barre d’administration

Cette astuce vous permet de découvrir la solution pour ajouter et supprimer des éléments de la barre d’administration de WordPress 3.3.

Sur WordPress, il est possible de supprimer des éléments de la barre d’administration, disponible lorsque vous êtes connecté.

Pour cela rien de plus simple, ouvrez votre fichier functions.php présent à la racine de votre thème et ajoutez le code suivant :

function edit_admin_bar() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('wp-logo'); // Logo
    $wp_admin_bar->remove_menu('about'); // A propos de WordPress
    $wp_admin_bar->remove_menu('wporg'); // WordPress.org
    $wp_admin_bar->remove_menu('documentation'); // Documentation
    $wp_admin_bar->remove_menu('support-forums');  // Forum de support
    $wp_admin_bar->remove_menu('feedback'); // Remarque
    $wp_admin_bar->remove_menu('view-site'); // Aller voir le site
}
add_action('wp_before_admin_bar_render', 'edit_admin_bar');

Dans cet exemple, toute la partie où il y avait le logo WordPress en haut à gauche sera supprimée. Si vous souhaitez uniquement conserver le logo il faut supprimer la ligne :

$wp_admin_bar->remove_menu('wp-logo'); // Logo

Bien sur il est possible de supprimer des éléments du menu, mais comment faire pour ajouter un élément ?

WordPress propose d’utiliser la méthode add_menu de sa class WP_Admin_Bar afin d’ajouter un élément au menu.

Voici un exemple d’utilisation :

function add_menu_admin_bar() {
    global $wp_admin_bar;
    $wp_admin_bar->add_menu(array(
	    'title' => 'Test', // Titre du menu
	    'href' => "http://google.fr", // Lien du menu
	    'parent' => "wp-logo", // Parent du menu
	));
}
add_action('admin_bar_menu', 'add_menu_admin_bar');

Le menu “Test” sera ajouté dans le parent ‘wp-logo’ qui est ici le menu avec le logo WordPress. Si aucun parent n’est renseigné, votre menu s’affichera en dernière position.

Pour plus d’informations sur cette fonction, je vous invite à consulter le Codex de WordPress.

PS : vous trouverez ci-dessous la liste des autres éléments principaux du menu que vous pouvez supprimer.

$wp_admin_bar->remove_menu('site-name'); // Nom du site
$wp_admin_bar->remove_menu('updates'); // Mises à jour
$wp_admin_bar->remove_menu('comments'); // Commentaires
$wp_admin_bar->remove_menu('new-content');  // Publier
Cet article a été publié il y a 4709 jours - Il n'est peut être plus à jour !

Article écrit par Rtransat

12 Commentaires

  1. Hello

    Le hook ‘admin_bar_menu’ ne s’utilise pas comme ça. Ok ça marche et ça marchera toujours, mais j’aime mettre les points sur les i.

    Dans les 2 codes que tu donnes tu aurais pu utiliser le hook ‘admin_bar_menu’, mais pour supprimer un élément, tu passes sur ‘wp_before_admin_bar_render’, pourquoi un tel choix ?

    Voici à quoi servent les 2 hooks (ceci n’est pas dans la doc, mais dans mon analyse du core) :
    – wp_before_admin_bar_render : hook à utiliser pour déclencher des actions qui ne touchent pas à $wp_admin_bar, comme par exemple euh … ajouter un script javascript en footer.
    SI on ne passe pas dans le hook notre script n’est pas inclus, donc c’est optimisé. Sachant que ce hook est déclenché dans le wp_footer et admin_footer, c’est splutôt bon.
    – admin_bar_menu : là je cite la doc “the action “admin_bar_menu” which should be used to hook in and add new menus to the admin bar” donc ajouter ou supprimer. Ce hook envoie un paramètre contrairement au prmier, ce paramètre c’est $wp_admin_bar !

    MAIS (oui ya un mais) tu es sencé utiliser le paramètre qui va bien et faire comme ceci :
    function add_menu_admin_bar($wp_admin_bar) {
    $wp_admin_bar->add_menu(array(
    ‘title’ => ‘Test’, // Titre du menu
    ‘href’ => “http://google.fr”, // Lien du menu
    ‘parent’ => “wp-logo”, // Parent du menu
    ));
    }
    add_action(‘admin_bar_menu’, ‘add_menu_admin_bar’);
    J’ai juste supprimé la globale et mis en paramètre la bar admin. C’est comme ça que le hook a été fabriqué ;)

    Voilà, j’ai mis mon point sur le i, les barres sur les T.
    Bonne journée !

  2. Merci BoiteAWeb pour ces précisions.

    J’apprécie l’article de Rtransat car il a le mérite d’apporter une solution à un problème concret.

    Mais je recherche aussi des codes les plus propres possibles pour faire des plugins et des thèmes réutilisables.

    Ces précisions vont dans ce sens et sont donc très utiles.

  3. Super, avec moi, compte sur moi pour faire du propre et de l’opti après analyse du code :) #Hireme

  4. Sans vouloir être tatillon :

    “Note: The Admin Bar is replaced with the toolbar since WordPress Version 3.3. The preferred way to add items to the toolbar is with add_node().”

    Mais bon sa ne change rien niveau rendu ;)

  5. Bonjour à tous , malheureusement pour moi quand j’ai inséré le bout de code ci-dessus , mon site me sort ” Fatal error: Call to undefined function add_action() in C:wampwwwIntranet_2.0.0wp-includesfunctions.php on line 4694

  6. C’est dans le functions.php de ton theme et non du core, ne jamais modifier le core !

  7. @AYMANAU : Comme Julio vient de le précisé, il faut insérer le code dans le fichier functions.php présent à la racine de votre thème. Il ne s’agit pas d’un fichier provenant du core de WordPress.

  8. Pour ceux qui souhaiteraient ajouter des éléments à la barre d’administration, une autre page du Codex WordPress peut être utile:
    http://codex.wordpress.org/Function_Reference/add_node

    Les ID des éléments que l’on souhaite supprimer peuvent être trouvés en explorant le code source et en se rendant sur l’élément souhaité.
    Son ID est présenté de la sorte dans le code source: id="wp-admin-bar-xxxx"
    Il suffit alors de mettre la partie “xxxx” pour la partie ID de la fonction.

    Exemple:
    Pour supprimer le lien “Aller sur le site”
    code source: wp-admin-bar-view-site
    ajout dans la fonction :

    $wp_admin_bar->remove_menu('view-site');

    Les ID par défaut utilisés pour la barre d’administration peuvent être trouvés dans le fichier : /wp-includes/admin-bar.php file.

    Personnellement pour mes sites j’ajoute des informations et conditions pour l’utilisation de ces fonctions:

    // On s’assure d’être dans le backoffice.
    // Inutile d’utiliser la fonction si on est sur le front :)

    if ( is_admin() ) { 
    
    /// la fonction de suppression ou d'ajout
    
    }
    

    On peut aussi compléter ceci avec des précisions sur le rôle des utilisateurs par exemple.
    Ce qui peut donner:

    // ici je précise que la fonction ne s’appliquera qu’aux utilisateurs qui ne sont pas administrateurs…
    if ( is_admin() && !current_user_can(‘administrator’) ) {

    /// la fonction d’ajout ou de suppression

    }

    Pour finir, on peut très bien coupler la fonction de suppression avec la fonction d’ajout.

    On a ainsi par exemple:

    if ( is_admin() && !current_user_can(‘administrator’) ) {

    function samsoul_admin_bar_render() {
    global $wp_admin_bar;

    $wp_admin_bar->remove_menu(‘updates’);

    $customerSupportURL = ‘http://www.mon-site.com/’;
    $wp_admin_bar->add_menu( array(
    ‘parent’ => false,
    ‘id’ => ‘customer_support’,
    ‘title’ => __(‘Customer Support’),
    ‘href’ => $customerSupportURL
    ));

    $contactUsURL = ‘http://www.mon-site.com/contact/’;
    $wp_admin_bar->add_menu(array(
    ‘parent’ => ‘customer_support’,
    ‘id’ => ‘contact_us’,
    ‘title’ => __(‘Contact Us’),
    ‘href’ => $contactUsURL
    ));
    }

    add_action( ‘wp_before_admin_bar_render’, ‘samsoul_admin_bar_render’ );

    }