web-dev-qa-db-ja.com

すべての管理バーメニュー項目を削除する方法?

特定の管理バー項目を削除する方法についてのテクニックを見たことがありますが、プラグイン/テーマによって追加された追加メニューをどのように使用すればよいでしょうか。

all Admin Barの項目を削除するには?

admin bar full of items


関連Q&A

5
brasofilo

管理バーからすべてのノードを取得し、それらを繰り返し処理し、parentを持たないすべてのノードを削除することでこれを解決しています。

特別なチェックが必要な[ユーザーアクション]メニュー( "Howdy、user_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 pluginで、これは優先順位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

5
brasofilo