Главная Новости

Wp_nav_mеnu(), создание пользовательских меню


Опубликовано: 02.09.2018

Использование меню такого типа очень удобно, особенно если делаешь сайт для заказчиков. Конечно, можно вывести рубрики при помощи wp_list_categories или вообще написать на HTML (лично я всегда так и делаю, когда создаю сайт для себя), но будет нудно, если пункты меню будут часто меняться и дополняться.

Для начала нужно включить поддержку меню темой, вставив этот код в файл functions.php:

if ( function_exists ( 'add_theme_support' ) ) { add_theme_support ( 'menus' ) ; }

А это более правильный вариант с регистрацией областей темы:

if ( function_exists ( 'register_nav_menus' ) ) { register_nav_menus ( array ( // создаём любое количество областей 'main_menu' => 'Главное меню' , // 'имя' => 'описание' 'foot_menu' => 'Меню в футере' ) ) ; }

После этого в админке появится вкладка Внешний вид > Меню. Заходим туда и создаём своё меню, назовём его например «menu1».

Засуньте этот код в то место в теме, куда вы хотите вставить менюху:

<?php wp_nav_menu ( "menu=menu1" ) ; ?>

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

Итак, функция wp_nav_menu()

Параметры по умолчанию:

$args = array ( 'theme_location' => , // область темы 'menu' => , // какое меню нужно вставить (по порядку: id, ярлык, имя) 'container' => 'div' , // блок, в который нужно поместить меню, укажите false, чтобы не помещать в блок 'container_class' => 'menu-{menu slug}-container' , // css-класс блока 'container_id' => , // id блока 'menu_class' => 'menu' , // css-класс меню 'menu_id' => , // id меню 'echo' => true , // вывести или записать в переменную 'fallback_cb' => 'wp_page_menu' , // какую функцию использовать если меню не существует, укажите false, чтобы не использовать ничего 'before' => , // текст или html-код, который нужно вставить перед каждым <a> 'after' => , // после </a> 'link_before' => , // текст перед анкором ссылки 'link_after' => , // после анкора и перед </a> 'items_wrap' => '<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>' , // HTML-шаблон 'depth' => 0 // количество уровней вложенности ) ;
rss