web-dev-qa-db-fra.com

Comment supprimer tous les éléments de menu de la barre d'administration?

J'ai déjà vu des techniques pour supprimer des éléments spécifiques de la barre d'administration, mais comment faire avec les menus supplémentaires ajoutés par les plugins/thèmes?

Comment supprimer les éléments all Admin Bar?

admin bar full of items


questions/réponses connexes

5
brasofilo

Je résous le problème en obtenant tous les nœuds dans la barre d'administration, en les parcourant et en supprimant tous ceux qui n'ont pas de parent.

Une exception est faite dans le menu Actions de l'utilisateur ("Howdy, nom_utilisateur"), qui nécessite une vérification supplémentaire.

add_action( 'admin_bar_menu', 'wpse_76491_admin_bar_menu', 200 );

function wpse_76491_admin_bar_menu() 
{
    global $wp_admin_bar;   
    if ( !is_object( $wp_admin_bar ) )
        return;

    // Clean the AdminBar
    $nodes = $wp_admin_bar->get_nodes();
    foreach( $nodes as $node )
    {
        // 'top-secondary' is used for the User Actions right side menu
        if( !$node->parent || 'top-secondary' == $node->parent )
        {
            $wp_admin_bar->remove_menu( $node->id );
        }           
    }
    // end Clean
}

Cela produit la barre d'administration suivante:
almost clean admin bar


Le seul élément restant est le Debug Bar plugin, qui est ajouté avec une priorité de 1000.

add_action('admin_bar_menu', array(&$this, 'admin_bar_menu'), 1000);

Le problème est que si nous accrochons avec une priorité supérieure à 200, nous ne pouvons pas ajouter d'éléments au nœud top-secondary. Et c'est un mystère pour moi ...

Mais bon, c’est un élément de développement et ne devrait pas être un problème. Et tous les 4 éléments supplémentaires ajoutés par les plugins ont été supprimés.


Pour être complet, voici un exemple d'éléments à ajouter après le nettoyage de la barre d'administration. Ce qui suit va après // end Clean:

// Conditional button, 'Go to Site' or 'Go to Admin' rendered
$title_goto = is_admin() ? 'Go to site' : 'Go to admin';
$url_goto = is_admin() ? site_url() : admin_url();
$wp_admin_bar->add_menu( array( 
    'id' => 'go_to_site_or_admin', 
    'title' => $title_goto, 
    'href' => $url_goto
) );
// end Conditional button

// Conditional Logout or Profile button
$title_logout = is_admin() ? 'Logout' : 'Profile';
$url_logout = is_admin() ? wp_logout_url() : get_edit_profile_url( get_current_user_id() );
$wp_admin_bar->add_menu( array(
    'id'    => 'wp-custom-logout',
    'title' => $title_logout,
    'parent'=> 'top-secondary',
    'href'  => $url_logout
) );
// end Conditional Logout/Profile button

// Codex search form item
$codex_search = '<form target="_blank" method="get" action="http://wordpress.org/search/do-search.php">
    <input type="text" onblur="this.value=(this.value==\'\') ? \'Search the Codex\' : this.value;" onfocus="this.value=(this.value==\'Search the Codex\') ? \'\' : this.value;" maxlength="100" value="Search the Codex" name="search" class="adminbar-input">
</form>';

$wp_admin_bar->add_menu( array( 
    'parent' => 'top-secondary', 
    'title' => $codex_search, 
    'href' => FALSE 
) );

Cela produira une barre d’administration différente si vous consultez l’administrateur ou le site.

backend admin bar

frontend admin bar

5
brasofilo