我需要在我的菜单中添加一个标题,该标题由wp_nav_menu构建......类似这样:
<div class="container">
<div class="title">My Menu Title</div>
<ul class="menu">
<li class="item"><a href="#">Item 1</a></li>
<li class="item"><a href="#">Item 2</a></li>
<li class="item"><a href="#">Item 3</a></li>
</ul>
</div>
我觉得很奇怪,默认情况下不包含这个:s
答案 0 :(得分:7)
这对你有用!
wp_nav_menu(
array(
'items_wrap' => '<div class="title">Your menu title</div><ul class="%2$s">%3$s</ul>'
)
);
答案 1 :(得分:2)
这似乎是一个稍微破坏的选项,我按照wordpress codex上的指南和链接的推荐指南,每次,items_wrap什么也没做,我的原始菜单代码是
<?php wp_nav_menu( array( 'theme_location' => 'primary','items_wrap' => '<ul id="%1$s" class="sf-menu %2$s">%3$s</ul>' ) ); ?>
哪个不起作用,经过多次拔毛后,我改为
<?php wp_nav_menu( array( 'items_wrap' => '<ul class="sf-menu %2$s">%3$s</ul>' ) ); ?>
哪一个,两者基本相同,所以如果第一次不工作就不要放弃,退掉并继续尝试!
答案 2 :(得分:0)
通常有一种方法可以在不编辑核心的情况下完成。我复制了wp_nav_menu()函数代码并略微修改了它。
// set menu arguments
$args = array('theme_location' => 'primary_navigation');
// if menu parameter set directly get menu object directly
if (isset($args['menu']))
$menu = wp_get_nav_menu_object( $args['menu'] );
// otherwise get it from theme location
elseif ( !isset($menu) && $args['theme_location'] && ( $locations = get_nav_menu_locations() ) && isset( $locations[ $args['theme_location'] ] ) )
$menu = wp_get_nav_menu_object( $locations[ $args['theme_location'] ] );
// if menu name exists, pass it into items_wrap
if (isset($menu) && isset($menu->name))
$args['items_wrap'] = '<h6>'. $menu->name .'</h6><ul class="%2$s">%3$s</ul>';
wp_nav_menu($args);
根据WordPress Codex,你永远不应该破解WordPress核心,因为:
答案 3 :(得分:-3)
/wp-includes/nav-menu-template.php中的Hack函数wp_nav_menu() 在第270行之后添加
$nav_menu = $items = '';
这一行:
$nav_menu .='<h3>'.$menu->name.'</h3>';