如何删除所有管理栏菜单项?

时间:2012-12-18 作者:brasofilo

我见过如何删除特定管理栏项目的技巧,但如何处理插件/主题添加的额外菜单?

如何删除all 管理栏项目?

admin bar full of items

<小时>

Related Q&A\'s

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

我正在解决这个问题,从管理栏获取所有节点,遍历它们并删除所有没有parent.

用户操作菜单(“Howdy,User\\u name”)出现异常,需要进行额外检查。

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
}
这将生成以下管理栏:
almost clean admin bar

唯一剩下的是Debug Bar 插件,添加的优先级为1000.

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

问题是,如果我们挂钩的优先级高于200, 我们无法将项目添加到top-secondary 节点。这对我来说是个谜。。。

但好吧,这是一个开发人员项目,不应该成为问题。插件添加的所有4个额外项目都已删除。

为了完整起见,请举例说明清理管理栏后要添加的内容。接下来是// 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 
) );
如果查看管理员或网站,这将生成不同的管理栏。

backend admin bar

frontend admin bar

结束

相关推荐

List latest posts in WP-Admin

我运行了一个多作者网站,并在wp admin中创建了一个插件,作者可以在其中相互连接和协作。为了增强它,我想显示一个最新帖子的列表,该列表应如下所示:如图所示,该列表应包含最新的10篇帖子,其中包含用户名、链接的帖子标题以及发布时间(发布时间或发布时间)。用于此的HTML应为:<table class=\"widefat\"> <thead><tr><th scope=\"col\">User</th>&