我正在解决这个问题,从管理栏获取所有节点,遍历它们并删除所有没有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
}
这将生成以下管理栏:
唯一剩下的是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
) );
如果查看管理员或网站,这将生成不同的管理栏。