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?
questions/réponses connexes
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:
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.