Mostrar el nombre del menú usando wp_nav_menu

14

Tengo un menú personalizado al que puedo llamar bien usando wp_nav_menu. ¿Hay alguna forma de que el nombre del menú aparezca dentro de una etiqueta h3 antes del menú?

Ej.

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

3 respuestas

15

Si conoce la barra del menú, entonces las cosas son más fáciles, de lo contrario, puede usar esta función para obtener el menú en una ubicación específica.

<?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;
}
?>

entonces

//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

O, en lugar de repetir el html, puede pasarlo como parte del argumento del atributo de los elementos en wp_nav_menu .

Por ejemplo, para mostrar el menú en la ubicación '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>') ); 
    
respondido por el Stephen Harris 15.03.2012 - 18:56
2

reemplaza el ID 4 a continuación con el ID de tu menú. Si no conoce la ID, vaya a la página de menús del administrador, haga clic con el botón derecho en la pestaña del menú del cual desea hacer eco en el título, inspeccione el elemento correspondiente y la ID aparecerá como menu = ID en el enlace.

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

la respuesta de stephen es buena. Pero lo puse un paso más allá:

<?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;
?>

suponiendo que tiene una ubicación de tema registrada llamada "footer_navigation3" y le asignó un menú de wp. ahora coloque este código donde quiera que desee mostrar su menú.

    
respondido por el nicmare 25.07.2015 - 13:20

Lea otras preguntas en las etiquetas