Анализ сайта

Оптимизация вашего сайта и исправление ошибок.

Вывод произвольного меню. Функция wp_nav_menu

Редирект пользователей и роботов с нежелательных сайтов
14.05.2017
SEO-направления работ над проектом
30.05.2017

Представляю руководство по созданию произвольного меню в Wordrpess.

Поддержка произвольных меню включена не во всех шаблонах. Статья содержит 2 части. В первой части статьи рассмотрим, как создать пункты меню в WordPress через административную панель, если произвольные меню уже подключены в шаблоне.

Во второй части статьи научимся включать поддержку произвольных меню в WordPress и настраивать вывод меню через PHP функцию wp_nav_menu. Эти знания вам пригодятся на случай, если в вашем шаблоне не предусмотрено использование произвольных меню или же вы сами пишете или редактируете тему оформления WordPress и хотите добавить туда возможность создания произвольных меню.

register_nav_menus(array(
   'top' => 'Верхнее меню'
));

Где «top» — идентификатор меню, а «Верхнее меню» — название месторасположения.
Если нужно добавить несколько меню, то перечисляем их через запятую.

register_nav_menus(array(
   'top' => 'Верхнее меню',
   'left' => 'Левое меню'
));

После добавления данного кода поддержка произвольных меню будет включена автоматически. Убедиться в этом вы можете, перейдя в Административную панель – Внешний вид – Меню. Но самой регистрации меню недостаточно. Меню нужно еще вывести в шаблоне. Для этого мы воспользуемся специальной функцией wp_nav_menu.

Вывод произвольного меню. Функция wp_nav_menu

Как уже говорилось выше, выводить произвольные меню мы будем при помощи функции wp_nav_menu, которая может принимать следующие параметры.

$args = array(
	'menu'            => '',              // Название меню (string).
	'container'       => 'div',           // Контейнер меню (string). В него помещается список ul.
	'container_class' => '',              // Класс контейнера (string).
	'container_id'    => '',              // Id контейнера (string).
	'menu_class'      => 'menu',          // Класс тега ul (string).
	'menu_id'         => '',              // Id тега ul (string).
	'echo'            => true,            // Выводить на экран или возвращать для обработки (boolean).
	'fallback_cb'     => 'wp_page_menu',  // Резервная функция на случай, если произвольное меню не существует (string).
	'before'          => '',              // Текст перед <a> каждой ссылки (string).
	'after'           => '',              // Текст после </a> каждой ссылки (string).
	'link_before'     => '',              // Текст перед анкором ссылки (string).
	'link_after'      => '',              // Текст после анкора ссылки (string).
	'depth'           => 0,               // Глубина вложенности (integer). 0 - неограниченно, 2 - двухуровневое произвольное меню.
	'walker'          => ,                // Класс, собирающий меню. Default: new Walker_Nav_Menu. (object).
	'theme_location'  => '');             // Расположение меню в шаблоне. Указываем идентификатор меню. (string).

При этом параметры можно передавать как через массив, так и через строку. В любом случае меню будет работать. Для наглядности рассмотрим оба варианта.

Передача параметров через массив

<?php
	$args = array(
		'menu_id'=>'topmenu',
		'theme_location'=>'top',
		'container'=>''
	);
	wp_nav_menu($args);
?>

Передача параметров через строку

wp_nav_menu('menu_id=topmenu&theme_location=top&container=');

Лично я предпочитаю второй вариант, так как он более компактный, на мой взгляд. В любом случае результатом работы функции будет следующий код.

<ul id="topmenu">
	<li><a href="#">Пункт 1</a></li>
	<li><a href="#">Пункт 2</a></li>
	<li><a href="#">Пункт 3</a></li>
</ul>

Удачи вам и успехов в создании сайтов на WordPress.