Создание меню 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мотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб