В WordPress позволяет добавлять в тему WordPress любое количество произвольных меню. Рассмотрим, как и куда добавить три меню.
В этой статье:
Произвольные и дефолтные меню
Произвольные меню (Native Menu) добавляются на сайт в разделе
Внешний вид>Меню
и могут включать рубрики (Categories), постоянные страницы (Pages), а также произвольные ссылки.
Обычно в теме имеется возможность добавления одного такого меню, но это не предел, и меню можно добавлять в любое место: выше и ниже заголовка и/или в подвал (footer). Например, это может быть верхнее меню постоянных страниц (Top Pages Menu), верхнее меню рубрик (Top Categories Menu) и меню ссылок внизу страницы (Footer Link Menu). Имя области темы для меню должно говорить о месте расположения этого меню .
На случай, если пользователь не будет активировать произвольное меню, желательно добавить возможность использования традиционного меню, используемого по умолчанию, т.е. обеспечить обратную совместимость.
1: Регистрация меню
В файл темы functions.php добавим код регистрации трех меню:
add_action('init', 'register_nav_menus_on_init'); function register_nav_menus_on_init() { register_nav_menus(array( 'top-pages-menu' => 'Top Pages Menu', 'top-cat-menu' => 'Top Categories Menu', 'footer-link-menu' => 'Footer Link Menu', )); }
2: Добавление областей меню в тему
Два верхних меню добавляем в файл header.php:
<div class="pages-nav"> <?php wp_nav_menu( array( 'theme_location' => 'top-pages-menu' ) ); ?> </div> .... <div class="cats-nav"> <?php wp_nav_menu( array( 'theme_location' => 'top-cats-menu' ) ); ?> </div>
Функции wp_nav_menu() передается имя зарегистрированного меню. Если меню активировано, эта функция добавляет для меню теги <ul> и<li>.
Третье меню добавляем в файл footer.php:
<div class="footer-nav"> <?php wp_nav_menu( array( 'theme_location' => 'footer-links-menu' ) ); ?> </div>
3: Традиционное меню (Обратная совместимость)
Дефолтное, традиционное меню будет выводиться, если в данной области меню не активировано произвольное меню. Изменяем файл header.php:
<div class="pages-nav"> <?php if (has_nav_menu('top-pages-menu')) { wp_nav_menu( array( 'theme_location' => 'top-pages-menu' ) ); } else { wp_list_pages(); } ?> </div> .... <div class="cats-nav"> <?php if (has_nav_menu('top-cats-menu')) { wp_nav_menu( array( 'theme_location' => 'top-cats-menu' ) ); } else { wp_list_categories(); } ?> </div>
В файле footer.php - аналогично.
Функции WordPress:
- wp_nav_menu() – вывод произвольного меню
- has_nav_menu( name ) – проверяет, было ли меню “name” активировано
- register_nav_menus() - регистрация меню
Источник (Add WordPress Native Menu Feature to WordPress Themes)