it-swarm-ru.tech

wp_nav_menu () пользовательский контейнер и container_id

Итак, сегодня я начал работать над своей первой темой Wordpress, и до сих пор это было очень весело. Однако у меня были трудности с получением wp_nav_menu (), чтобы делать то, что я хочу.

Вот что я хочу:

<nav id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</nav>

Глядя в документацию, я ожидал, что следующий вызов сделает то, что я хочу:

<?php wp_nav_menu(array( 'container' => 'nav', 'container_id' => 'topnav' )); ?>

Но вместо этого я получаю это:

<div class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>

Мне кажется, что мои пользовательские параметры игнорируются, поскольку вывод wp_nav_menu() точно такой же. Есть ли что-то, что мне нужно включить где-то, чтобы включить это или что-то еще происходит?

ПРАВКА

Любопытно, что если я изменю menu_class, это изменит класс div (я ожидал, что div будет контейнером), но изменение menu_id ничего не даст.

Правка 2

Даже переход в nav-menu-template.php и изменение значений по умолчанию для container, container_id, container_class, menu_id ничего не делает. Изменение menu_class на yyy изменит класс div с menu на yyy.

3
Tom Savage

у меня была проблема с сохранением: это потому, что если вы не создаете меню в админпрессе, используйте резервный метод и создаете меню из всех активных страниц ... и если это происходит, то параметры из wp_nav_menu не используются ,.

итак: просто создайте меню в админке, и вы можете изменить тег-обертку на "nav".

6
user2802

Прежде всего, вы не сможете заставить WordPress выводить какие-либо элементы <nav>, используя встроенные функции. <nav> - это тег HTML5, а WordPress создан для генерации вывода XHTML ... т.е. элемента <nav> нет.


Edit: Видимо, функция разрешает nav ... но имейте в виду, что остальная часть ядра WordPress по-прежнему построена для вывода XHTML, а не HTML5 ... позаботьтесь о том, чтобы ваш сайт правильно проверялся .


Попробуйте удалить эту ссылку ... это может быть причиной ошибки, которая игнорирует вашу инструкцию 'container_id' => 'topnav'. Если все работает правильно без ссылки на nav, у вас должно быть следующее:

<div id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>
1
EAMann
1
hakre

не уверен, что кто-то еще хочет решить эту проблему - но попал сюда, пытаясь найти ответ сам - думал, что поделюсь своим решением :)

Также хотел использовать <nav> вместо элемента <div> и решил это, удалив <div>, как указано на этой странице, wordpress codex:http://codex.wordpress.org/ Function_Reference/wp_nav_menu :

<?php
function my_wp_nav_menu_args( $args = '' )
{
    $args['container'] = false;
    return $args;
} // function

add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
?>

Добавил в мой файл functions.php, разметил файл темы с тегом <nav> и у меня все работало нормально;) надеюсь, это поможет :)

0
user3160