使用wp_nav_menu显示菜单名称


17

我有一个自定义菜单,可以使用wp_nav_menu调用它。有没有办法在菜单之前的h3标签中显示菜单名称?

例如

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

Answers:


15

如果您知道菜单的内容,那么事情就容易了,否则可以使用此功能将菜单移至指定位置。

<?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作为echo,而作为的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>') ); 

1
斯蒂芬,谢谢你的大力回应。很抱歉成为菜鸟,但您能否提供将html作为参数传递的代码。那将解决所有问题。谢谢!
csi 2012年

查看最新答案:D
Stephen Harris

4

将下面的ID 4替换为菜单ID。如果您不知道ID进入管理员的菜单页面,请右键单击您要为其呼应标题的菜单选项卡,检查元素,并且ID将在链接中以menu = ID的形式列出。

<?
$_menu_object = wp_get_nav_menu_object( 4 );
$nav_menu_selected_title = $_menu_object->name;
echo $nav_menu_selected_title;
?>

2

斯蒂芬的答案是好的。但我将其进一步:

<?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菜单。现在,将此代码放置在您要显示菜单的任何位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.