Anexar um menu de navegação à barra de administração?

4

Já vi várias soluções de como anexar links manualmente à nova barra de administração do WP, mas preciso tornar isso muito mais fácil para os administradores do meu site.

Ocorreu-me que a solução mais fácil seria criar um menu de navegação personalizado e, em seguida, ter esse menu 'anexado' à barra de administração. Desta forma, o administrador do site poderia facilmente adicionar novos links à barra de administração simplesmente adicionando páginas ao menu personalizado.

A idéia principal é colocar um menu suspenso exibindo as páginas do menu diretamente no lado direito da barra de administração.

    
por shawn 20.04.2011 / 07:31

1 resposta

4

Acontece que é muito fácil! Não há necessidade de um walker especial, wp_get_nav_menu_items() retorna tudo o que você precisa. Este exemplo adiciona um item de menu raiz único e, em seguida, o menu, você pode fazer isso de forma diferente, se quiser. Ele mapeia todos os recursos extras do menu que eu encontrei no código, não sei se você pode defini-los todos no menu UI.

add_action( 'admin_bar_menu', 'wpse15186_admin_bar_menu' );
function wpse15186_admin_bar_menu( &$wp_admin_bar )
{
    $menu = wp_get_nav_menu_object( 'WPSE 15186 test menu' );
    $menu_items = wp_get_nav_menu_items( $menu->term_id );

    $wp_admin_bar->add_menu( array(
        'id' => 'wpse15186-menu-0',
        'title' => 'WPSE 15186 menu',
    ) );

    foreach ( $menu_items as $menu_item ) {
        $wp_admin_bar->add_menu( array(
            'id' => 'wpse15186-menu-' . $menu_item->ID,
            'parent' => 'wpse15186-menu-' . $menu_item->menu_item_parent,
            'title' => $menu_item->title,
            'href' => $menu_item->url,
            'meta' => array(
                'title' => $menu_item->attr_title,
                'target' => $menu_item->target,
                'class' => implode( ' ', $menu_item->classes ),
            ),
        ) );
    }
}
    
por Jan Fabry 20.04.2011 / 11:09