Отображение названия меню с помощью меню wp nav


У меня есть пользовательское меню, которое я могу вызвать просто отлично, используя wp_nav_menu. Есть ли способ, чтобы название меню отображалось внутри тега h3 перед меню?

Например

<h3>My Menu Name</h3>
<nav>
<ul>
<li>Menu Item 1</li>
<li>Menu Item 2</li>
</ul>
</nav>
Author: csi, 2012-03-15

3 answers

Если вы знаете, в каком месте находится меню, то все проще, в противном случае вы можете использовать эту функцию, чтобы получить меню в указанном месте.

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

Затем

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

Или, вместо того, чтобы повторять html, вы могли бы передать его как часть аргумента для атрибута items в wp_nav_menu.

Например, для отображения меню в местоположении "основное":

$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
Author: Stephen Harris, 2012-03-15 18:18:14

Замените идентификатор 4 ниже идентификатором вашего меню. если вы не знаете идентификатор, перейдите на страницу меню администратора, щелкните правой кнопкой мыши вкладку меню, для которого вы хотите повторить заголовок, проверьте элемент, и идентификатор будет указан как меню=ИДЕНТИФИКАТОР в ссылке.

<?
$_menu_object = wp_get_nav_menu_object( 4 );
$nav_menu_selected_title = $_menu_object->name;
echo $nav_menu_selected_title;
?>
 4
Author: tbradley22, 2013-03-06 20:23:14

Ответ Стивена хорош. но я сделал еще один шаг вперед:

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

Предполагая, что вы зарегистрировали местоположение темы под названием "footer_navigation3" и назначили ему меню wp. теперь поместите этот код туда, где вы хотите отобразить свое меню.

 2
Author: nicmare, 2015-07-25 11:20:40