Итак, сегодня я начал работать над своей первой темой 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.
у меня была проблема с сохранением: это потому, что если вы не создаете меню в админпрессе, используйте резервный метод и создаете меню из всех активных страниц ... и если это происходит, то параметры из wp_nav_menu не используются ,.
итак: просто создайте меню в админке, и вы можете изменить тег-обертку на "nav".
Прежде всего, вы не сможете заставить 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>
Меню API частично не работает, вы не можете рассчитывать на вывод. В этой связи есть разные тикеты, я только сделал быстрый поиск, но, возможно, решение вашей проблемы объясняется в одном из них:
не уверен, что кто-то еще хочет решить эту проблему - но попал сюда, пытаясь найти ответ сам - думал, что поделюсь своим решением :)
Также хотел использовать <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> и у меня все работало нормально;) надеюсь, это поможет :)