Mostrar el nombre del menú con wp_nav_menu


17

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

Ex.

<h3>My Menu Name</h3>
<nav>
<ul>
<li>Menu Item 1</li>
<li>Menu Item 2</li>
</ul>
</nav>

Respuestas:


15

Si conoce la babosa 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;
}
?>

Luego

//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 para el atributo de elementos en wp_nav_menu.

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

$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>') ); 

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

Ver respuesta actualizada: D
Stephen Harris

4

reemplace la identificación 4 a continuación con la identificación de su menú. si no conoce la identificación, vaya a la página de menús del administrador, haga clic derecho en la pestaña del menú para el que desea hacer eco del título, inspeccione el elemento y la identificación 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;
?>

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 haya registrado una ubicación de tema llamada "footer_navigation3" y le haya asignado un menú wp. ahora coloque este código donde quiera mostrar su menú.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.