Создание меню WordPress

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

Для начала нам потребуется включить возможность создания пользовательских меню в нашей теме. Для этого откроем файл functions.php в папке с темой и добавим туда вызов функции register_nav_menus, в котором будет массив с названиями мест, куда может быть встроено наше меню код:
<?php 
register_nav_menus(array(
   'top' => 'Верхнее меню',
   'bottom' => 'Нижнее меню' 
));
Функция "register_nav_menus" регистрирует меню. Сами меню настраиваются в панели администрировани и в дальнейшем будут выводиться в шаблоне с помощью функции "wp_nav_menu".

Таким образом мы зарегистрировали два меню с идентификаторами "top" и "bottom". Теперь перейдём в панель администрирования. В закладке "Внешний вид" - "Меню" найдите вкладку "Управление областями". Вы увидите в списке название "Верхнее меню" и "Нижнее меню" - это области темы, которые мы зарегистрировали под меню ранее с помощью функции "register_nav_menus". В выпадающих списках выберите меню, которые необходимо отображать в этих областях. изменение параметров меню в панели администрирования WordPress Чтобы создать сами меню и настроить пункты используйте закладку "Редактировать меню". В ней создайте меню и сохраните его. Затем вернитесь на вкладку "Управление областями" и выберите созданное меню для отображения в нужной области.

После окончания изменения меню в панели администрирования попробуем добавить его в тему сайта. Для этого откройте нужный файл шаблона и добавьте в него следующий PHP код с вызовом функции "wp_nav_menu":
<?php 
wp_nav_menu(array(
   'theme_location' => '', // (строка) Расположение меню в шаблоне. Ключ, под которым было зарегистрировано меню в функции register_nav_menus (в нашем случае это "top" или "bottom")
   'menu' => '', // (строка) Название выводимого меню. Если не указать, то берётся название из панели администрирования. Если указано, то параметр 'theme_location' игнорируется. Можно вместо названия указывать id меню - целое число.
   'container' => 'div', // (строка - название тега) Чем обрамляется меню. Если не указано, то это тег div.
   'container_class' => '', // (строка) содержание атрибута class контейнера (div тега)
   'container_id' => '', // (строка) id контейнера (div тега)
   'menu_class' => 'menu', // (строка) содержание атрибута class меню (списка ul)
   'menu_id' => '', // (строка) id меню (списка ul)
   'echo' => true, // (логическая) Выводить меню (при значении "true") или возвращать код вывода в переменную (при значении "false").
   'fallback_cb' => 'wp_page_menu', // (строка) Резервная функция, если меню не существует
   'before' => '', // (строка) Текст перед каждым пунктом меню
   'after' => '',  // (строка) Текст после каждого пункта меню
   'link_before' => '', // (строка) Текст перед анкором ссылки
   'link_after' => '', // (строка) Текст после анкора ссылки
   'depth' => 0, // (целое число) Глубина вложенности (0 - нет ограничений, 2 - два уровня меню)
   'walker' => '', // (объект) Класс собирающий меню. По умолчанию объект класса Walker_Nav_Menu
));
Пустые параметры можно не указывать, поэтому код выше можно переписать так:
<?php 
wp_nav_menu(array(
   'theme_location' => 'top', 
   'container' => 'div', 
));

Проверка существования регистрации меню

В WordPress есть функция has_nav_menu, которая проверяет было ли зарегистрировано меню по заданному идентификатору (в нашем случае значения "top" и "bottom"). Эту функцию часто используют при выведении меню. К примеру, так:
<?php 
if(has_nav_menu('top')){
   wp_nav_menu(array(
      'theme_location' => 'top', 
      'container' => 'div', 
   ));
}else{
   echo 'Ошибка: меню не было зарегистрировано!';
}
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: