如何使用wp_nav_menu在ul之前添加标题?

时间:2011-10-26 01:34:54

标签: wordpress menu

我需要在我的菜单中添加一个标题,该标题由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

4 个答案:

答案 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核心,因为:

Do not hack core

答案 3 :(得分:-3)

/wp-includes/nav-menu-template.php中的Hack函数wp_nav_menu() 在第270行之后添加

$nav_menu = $items = '';

这一行:

$nav_menu .='<h3>'.$menu->name.'</h3>';