как назначить ID меню в WordPress

11 янв. 2013 г., 15:05:08
Просмотры: 14.6K
Голосов: -1

Следующий код не создает UL с ID "nav". Вместо этого выводится:

<div class="menu"><ul>

Вот используемый код:

wp_nav_menu( array( 'theme_location' => 'menu-1', 'container_id'    => 'nav'; 

Согласно документации WP Codex, это должно работать. Почему это не работает?

Версия WP = 3.5

Обновление

Теперь у меня:

wp_nav_menu( array( 'theme_location' => 'menu-1', 'items_wrap' => '<ul id="nav">%3$s</ul>', 'menu_id' => 'nav'));

но это тоже не работает.

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

убедитесь, что ваша тема не фильтрует wp_nav_menu_args и не переопределяет ваши настройки.

Milo Milo
13 янв. 2013 г. 05:35:30

@Milo. В functions.php нет ничего об этом.

Steve Steve
13 янв. 2013 г. 08:50:27
Все ответы на вопрос 4
3

Согласно этой странице Codex, вам нужно использовать menu_id. container_id влияет только на окружающий div.

11 янв. 2013 г. 15:11:44
Комментарии

Думаю, ты прав, но код всё равно выводит <div class="menu">

Steve Steve
11 янв. 2013 г. 15:29:26

да, согласно codex, но это не сработало

GusDeCooL GusDeCooL
10 янв. 2015 г. 17:21:35

это правильный ответ

Nate Beers Nate Beers
4 авг. 2017 г. 19:03:28
4

Правильный параметр для ul — это menu_id, а для контейнера — container_id. Однако ul работает только если передать …

'<ul id="%1$s" class="%2$s">%3$s</ul>'

… в качестве аргумента items_wrap.

Можно явно указать значение, например так:

wp_nav_menu(
    array (
    'items_wrap'      => '<ul id="nav">%3$s</ul>'
    'theme_location' => 'top-menu'
    )
);

Смотрите Документацию по аргументу "items_wrap" для wp_nav_menu

11 янв. 2013 г. 17:10:29
Комментарии

Спасибо @toscho, но это тоже не сработало.

Steve Steve
13 янв. 2013 г. 05:22:25

Теперь у меня wp_nav_menu( array( 'theme_location' => 'menu-1', 'items_wrap' => '<ul id="nav">%3$s</ul>', 'menu_id' => 'nav'));

Steve Steve
13 янв. 2013 г. 05:23:44

@Steve Отключите все плагины. Вы что-то серьезно сломали. Мое решение работает во всех случаях.

fuxia fuxia
13 янв. 2013 г. 09:25:37

Я отключил все плагины, но проблема остаётся: вывод выглядит как <div class="menu"><ul>

Steve Steve
14 янв. 2013 г. 13:41:00
1

По моему мнению, menu-1 должен быть ID вашего меню. Пожалуйста, ознакомьтесь с параметрами здесь и укажите соответствующие параметры.

На мой взгляд, ваш код должен выглядеть так:

wp_nav_menu( array( 'menu' => 'menu-1', 'container_id'    => 'nav' ));
11 янв. 2013 г. 15:21:54
Комментарии

Параметр menu принимает идентификатор из базы данных, а не CSS id. Я хочу назначить CSS id для элемента UL.

Steve Steve
11 янв. 2013 г. 15:30:57
0

Это может быть полезно, мне это помогло разобраться.

    <?php wp_nav_menu( array(
            'menu' => 0,
            'container' =>false,
            'menu_class' => 'nav',
            'echo' => true,
            'before' => '',
             'after' => '',
             'link_before' => '',
             'link_after' => '',
             'depth' => 0,
            'walker' => new description_walker())
             );?>

Этот код будет присваивать вашим меню случайные ID при их создании. Надеюсь, это было полезно, не уверен, что правильно понял вопрос.

11 янв. 2013 г. 16:34:33