Почему аргумент container не работает в wp_nav_menu()

6 февр. 2015 г., 09:44:12
Просмотры: 920
Голосов: 0

Следующий код выводит меню, но тег контейнера <nav> отсутствует.

$menu_settings = array(
    'menu' => 'Packages',
    'container' => 'nav', // Указываем контейнер nav
    'container_class' => '',
    'container_id' => '',
    'menu_class' => 'menu',
    'menu_id' => '',
    'echo' => true,
    'fallback_cb' => 'wp_page_menu',
    'before' => '',
    'after' => '',
    'link_before' => '',
    'link_after' => '',
    'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', // Обертка для элементов меню
    'depth' => 0,
    'walker' => '',
    'theme_location' => 'primary' // Местоположение меню в теме
);

?>

      <?php wp_nav_menu( $menu_settings ); ?>

Меню зарегистрированы в functions.php:

register_nav_menus( array(
 'primary' => __( 'Packages Menu', 'nameoftheme'), // Основное меню "Пакеты"
 'secondary' => __( 'Services Menu', 'nameoftheme' ), // Дополнительное меню "Услуги"
) );

В результате выводится только <ul> с пунктами меню. Элементы списка также не обернуты.

5
Комментарии

Пожалуйста, правильно оформляйте отступы в вашем коде. На небольших экранах большая часть вашего кода выходит за границы и становится нечитаемой :-)

Pieter Goosen Pieter Goosen
6 февр. 2015 г. 09:46:22

Исправлено. Хотя стоит отметить, что менее разумные разработчики могут возмутиться, услышав "оформляй отступы правильно" :-)

codecowboy codecowboy
6 февр. 2015 г. 09:52:52

Это правда, но опять же, им решать, хотят ли они помощи. Большинство пользователей вроде меня используют устройства с маленькими экранами, например, мобильные телефоны, и если код не имеет правильных отступов или форматирования, мы не можем его прочитать и просто игнорируем вопрос. Как разработчик, вы должны понимать, насколько раздражает читать и отлаживать код с проблемами форматирования. :-) Это просто мои мысли и совет. Действительно, читаемость вопроса влияет на количество положительных откликов, которые вы получите.

Pieter Goosen Pieter Goosen
6 февр. 2015 г. 09:59:13

Код выглядит нормально. Только что проверил - он действительно выводит контейнер навигации и обернутые элементы.

User User
6 февр. 2015 г. 10:12:44

Происходит ли это до сих пор после того, как вы отключили все плагины и переключились на одну из тем Twenty*? Пожалуйста, следуйте описанному процессу, чтобы определить конфликтующий плагин или тему.

kaiser kaiser
10 февр. 2015 г. 10:37:40
Все ответы на вопрос 1
1

Поскольку я использую фреймворк темы roots, эта строка удаляет аргумент container:

function roots_nav_menu_args($args = '') {
  $roots_nav_menu_args = array();
  $roots_nav_menu_args['container'] = false;
  if (!$args['items_wrap']) {
    $roots_nav_menu_args['items_wrap'] = '<ul class="%2$s">%3$s</ul>';
  }
  if (!$args['depth']) {
    $roots_nav_menu_args['depth'] = 2;
  }
  return array_merge($args, $roots_nav_menu_args);
}
add_filter('wp_nav_menu_args', 'roots_nav_menu_args');
6 февр. 2015 г. 13:09:53
Комментарии

Это теперь можно найти в Soil: add_theme_support('soil-nav-walker');

Sven Sven
5 дек. 2018 г. 07:00:06