Как бы я добавил заголовок перед ul с помощью wp_nav_menu? - PullRequest
5 голосов
/ 26 октября 2011

Мне нужно добавить заголовок в мое меню, которое создается 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 ]

7 голосов
/ 26 октября 2011

Это должно работать для вас!

wp_nav_menu(
  array(
    'items_wrap' => '<div class="title">Your menu title</div><ul class="%2$s">%3$s</ul>'
  )
);
2 голосов
/ 25 июля 2012

Это похоже на слегка неработающий вариант, я следовал руководству по кодексу WordPress и рекомендованному руководству по ссылкам, и каждый раз, когда 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>' ) ); ?>

Что и есть, оба в основном идентичны, поэтому, если это не сработает в первый раз, не сдавайтесь, раздевайтесь и продолжайте пытаться!

0 голосов
/ 09 января 2014

Обычно есть способ сделать это без редактирования ядра. Я скопировал коды функций 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 , вы никогда не должны взламывать ядро ​​WordPress, потому что:

Do not hack core

0 голосов
/ 08 ноября 2013

Взломать функцию wp_nav_menu () в /wp-includes/nav-menu-template.php добавить после строки 270

$nav_menu = $items = '';

этой строки:

$nav_menu .='<h3>'.$menu->name.'</h3>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...