Exibir nome do menu usando wp_nav_menu

14

Eu tenho um menu personalizado que eu posso chamar muito bem usando wp_nav_menu. Existe uma maneira de ter o nome do menu exibido dentro de uma tag h3 antes do menu?

Ex.

<h3>My Menu Name</h3>
<nav>
<ul>
<li>Menu Item 1</li>
<li>Menu Item 2</li>
</ul>
</nav>
    
por csi 15.03.2012 / 18:19

3 respostas

15

Se você souber o slug do menu, as coisas ficarão mais fáceis, caso contrário, você poderá usar essa função para obter o menu em um local especificado.

<?php
function wpse45700_get_menu_by_location( $location ) {
    if( empty($location) ) return false;

    $locations = get_nav_menu_locations();
    if( ! isset( $locations[$location] ) ) return false;

    $menu_obj = get_term( $locations[$location], 'nav_menu' );

    return $menu_obj;
}
?>

Então

//if you after the menu the menu with a specific ID / Slug
//$menu_obj =wp_get_nav_menu_object($id_slug_or_name); 

//if you after the menu at a specific location
$menu_obj = wpse45700_get_menu_by_location($location); 

echo "<h3>".esc_html($menu_obj->name)."</h3>";
//Display menu here

Ou, em vez de fazer eco do html, você poderia passá-lo como parte do argumento do atributo items em wp_nav_menu .

Por exemplo, para exibir o menu no local 'principal':

$location = 'primary';
$menu_obj = wpse45700_get_menu_by_location($location ); 
wp_nav_menu( array('theme_location' => $location, 'items_wrap'=> '<h3>'.esc_html($menu_obj->name).'</h3><ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>') ); 
    
por Stephen Harris 15.03.2012 / 18:56
2

substitua o ID 4 abaixo pelo ID do seu menu. Se você não souber o ID, vá para a página de menus do admin, clique com o botão direito do mouse na aba do menu para o qual deseja ecoar o título, inspecione elemenent e o id será listado como menu = ID no link. / p>

<?
$_menu_object = wp_get_nav_menu_object( 4 );
$nav_menu_selected_title = $_menu_object->name;
echo $nav_menu_selected_title;
?>
    
por tbradley22 06.03.2013 / 21:23
2

a resposta de stephen é boa. mas eu coloco um passo adiante:

<?php 
$location = 'footer_navigation3';
if (has_nav_menu($location)) :
    $menu_obj = get_menu_by_location($location); 
    wp_nav_menu( array( 
        'theme_location'  => $location,
        'items_wrap'=> '<strong>'.esc_html($menu_obj->name).'</strong><ul id="%1$s" class="%2$s">%3$s</ul>'
    )); 
endif;
?>

assumindo que você tenha um local de tema registrado chamado "footer_navigation3" e atribuiu um menu wp para isso. agora coloque este código onde quer que você queira exibir seu menu.

    
por nicmare 25.07.2015 / 13:20