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

Использование меню такого типа очень удобно, особенно если делаешь сайт для заказчиков. Конечно, можно вывести рубрики при помощи 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()

wp_nav_menu($args);

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

$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 // количество уровней вложенности
);
Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.