web-dev-qa-db-fra.com

Joindre un menu de navigation à la barre d'administration?

J'ai déjà vu un certain nombre de solutions pour attacher manuellement des liens à la nouvelle barre d'adressage WP, mais je dois faciliter cela beaucoup plus facilement pour les administrateurs de mon site.

Je me suis dit que la solution la plus simple consisterait à créer un menu de navigation personnalisé, puis à l’attacher à la barre d’administration. De cette façon, l'administrateur du site pourrait très facilement ajouter de nouveaux liens à la barre d'administration en ajoutant simplement des pages au menu personnalisé.

L'idée principale est de placer un menu déroulant affichant les pages de menu directement sur le côté droit de la barre d'administration.

4
shawn

Cela s'avère être très facile! Pas besoin de marcheur spécial, wp_get_nav_menu_items() renvoie tout ce dont vous avez besoin. Cet exemple ajoute un élément de menu racine unique, puis le menu. Vous pouvez le faire différemment si vous le souhaitez. Il mappe toutes les fonctionnalités de menu supplémentaires que je pourrais trouver dans le code, je ne sais pas si vous pouvez toutes les définir dans l'interface de menu.

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 ),
            ),
        ) );
    }
}
4
Jan Fabry