Mostrar el Nombre del Menú usando wp_nav_menu

15 mar 2012, 19:19:57
Vistas: 33.9K
Votos: 18

Tengo un menú personalizado que puedo llamar sin problemas usando wp_nav_menu. ¿Hay alguna manera de mostrar el nombre del menú dentro de una etiqueta h3 antes del menú?

Ejemplo:

<h3>Nombre de Mi Menú</h3>
<nav>
<ul>
<li>Elemento del Menú 1</li>
<li>Elemento del Menú 2</li>
</ul>
</nav>
0
Todas las respuestas a la pregunta 3
2
17

Si conoces el slug del menú, entonces las cosas son más fáciles, de lo contrario puedes 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;
}
?>

Luego

//si buscas el menú con un ID / Slug específico
//$menu_obj =wp_get_nav_menu_object($id_slug_or_name); 

//si buscas el menú en una ubicación específica
$menu_obj = wpse45700_get_menu_by_location($location); 

echo "<h3>".esc_html($menu_obj->name)."</h3>";
//Mostrar menú aquí

O, en lugar de hacer echo del html, podrías pasarlo como parte del argumento para el atributo items en wp_nav_menu.

Por ejemplo, para mostrar el menú en la ubicación 'primary':

$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>') ); 
15 mar 2012 19:56:06
Comentarios

Stephen, gracias por la gran respuesta. Lamento ser un novato pero ¿podrías proporcionar el código para pasar el html como argumento? Eso resolvería todo. ¡Gracias!

csi csi
15 mar 2012 20:02:16

Mira la respuesta actualizada :D

Stephen Harris Stephen Harris
15 mar 2012 20:18:24
0

reemplaza el ID 4 a continuación con el ID de tu menú. si no conoces el ID, ve a la página de menús en el administrador, haz clic derecho en la pestaña del menú del cual quieres mostrar el título, inspecciona el elemento y el ID estará listado 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;
?>
6 mar 2013 22:23:14
0

La respuesta de Stephen es buena, pero yo la llevo 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;
?>

Asumiendo que has registrado una ubicación de tema llamada "footer_navigation3" y asignado un menú de WordPress a esa ubicación. Ahora coloca este código donde quieras mostrar tu menú.

25 jul 2015 14:20:40