2011-10-26 4 views
5

ho bisogno di aggiungere un titolo al mio menù, che viene costruito da wp_nav_menu ... qualcosa di simile:Come aggiungerei un titolo prima di ul usando wp_nav_menu?

<div class="container"> 
    <div class="title">My Menu Title</div> 
    <ul class="menu"> 
    <li class="item"><a href="#">Item 1</a></li> 
    <li class="item"><a href="#">Item 2</a></li> 
    <li class="item"><a href="#">Item 3</a></li> 
    </ul> 
</div> 

Trovo strano che questo non è incluso di default: s

risposta

6

Questo dovrebbe funzionare per te!

wp_nav_menu(
    array(
    'items_wrap' => '<div class="title">Your menu title</div><ul class="%2$s">%3$s</ul>' 
) 
); 
+1

You rock! Grazie: D – SomethingOn

2

Questa sembra una scelta un po 'rotto, ho seguito la guida sul codice wordpress, e una guida consigliato collegato, e ogni volta, items_wrap ha fatto niente di niente, il mio codice di menu originale era

<?php wp_nav_menu(array('theme_location' => 'primary','items_wrap' => '<ul id="%1$s" class="sf-menu %2$s">%3$s</ul>')); ?> 

che non ha funzionato e dopo tanto tirare i capelli, ho cambiato in questo

<?php wp_nav_menu(array('items_wrap' => '<ul class="sf-menu %2$s">%3$s</ul>')); ?> 

che fa, entrambi sono sostanzialmente identiche, quindi se non funziona prima volta non si arrendono, e striscia indietro continua a provare ing!

-3

Hack funzione wp_nav_menu() in /wp-includes/nav-menu-template.php inserirlo dopo riga 270

$nav_menu = $items = ''; 

questa linea:

$nav_menu .='<h3>'.$menu->name.'</h3>'; 
0

Comunemente v'è un modo per fallo senza modificare il core. Ho copiato i codici funzione wp_nav_menu() e leggermente modificato per farlo.

// set menu arguments 
    $args = array('theme_location' => 'primary_navigation'); 

    // if menu parameter set directly get menu object directly 
    if (isset($args['menu'])) 
    $menu = wp_get_nav_menu_object($args['menu']); 
    // otherwise get it from theme location 
    elseif (!isset($menu) && $args['theme_location'] && ($locations = get_nav_menu_locations()) && isset($locations[ $args['theme_location'] ])) 
    $menu = wp_get_nav_menu_object($locations[ $args['theme_location'] ]); 

    // if menu name exists, pass it into items_wrap 
    if (isset($menu) && isset($menu->name)) 
    $args['items_wrap'] = '<h6>'. $menu->name .'</h6><ul class="%2$s">%3$s</ul>'; 
    wp_nav_menu($args); 

Secondo WordPress Codex, non si dovrebbe mai incidere nucleo di WordPress, perché:

Do not hack core