Добавляем меню в свой шаблон на CMS WordPress
Регистрируем и выводим произвольное меню, созданное в панели: «Внешний вид > Меню» (Appearance > Menus).
Регистрируем меню
add_action('after_setup_theme', function(){ register_nav_menus( array( 'main_menu' => __( 'Primary menu', 'crea' ), 'foot_menu' => __( 'Footer menu', 'crea' ), ) ); });
Второй вариант регистрации меню (не знаю, на сколько он правильный, поэтому лучше использовать первый вариант)
if (function_exists('register_nav_menu')) { register_nav_menus(array( 'main_menu' => __( 'Primary menu', 'crea' ), 'foot_menu' => __( 'Footer menu', 'crea' ), )); }
Выводим меню
<?php wp_nav_menu('theme_location=main-menu&container_class=top-menu&container_id=&menu_id=&menu_class='); ?>
Второй вариант вывода меню
<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>
Более подробно про регистрацию и вывод меню в шаблоне
Использование
<?php wp_nav_menu( $args ); ?>
wp_nav_menu( array( 'theme_location' => '' // (string) Расположение меню в шаблоне. (указывается ключ которым было зарегистрировано меню в функции 'menu' => '', // (string) Название выводимого меню (указывается в админке при создании меню, приоритетнее чем указанное местоположение theme_location - если указано, то параметр theme_location игнорируется) 'container' => 'div', // (string) Контейнер меню. Обворачиватель ul. Указывается тег контейнера (по умолчанию в тег div) 'container_class' => '', // (string) class контейнера (div тега) 'container_id' => '', // (string) id контейнера (div тега) 'menu_class' => 'menu', // (string) class самого меню (ul тега) 'menu_id' => '', // (string) id самого меню (ul тега) 'echo' => true, // (boolean) Выводить на экран или возвращать для обработки 'fallback_cb' => 'wp_page_menu', // (string) Используемая (резервная) функция, если меню не существует (не удалось получить) 'before' => '', // (string) Текст перед <a> каждой ссылки 'after' => '', // (string) Текст после </a> каждой ссылки 'link_before' => '', // (string) Текст перед анкором (текстом) ссылки 'link_after' => '', // (string) Текст после анкора (текста) ссылки 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'depth' => 0, // (integer) Глубина вложенности (0 - неограничена, 2 - двухуровневое меню) 'walker' => '' // (object) Класс собирающий меню. Default: new Walker_Nav_Menu ) );
Аргументы параметра $args
theme_location(строка)
Идентификатор расположение меню в шаблоне. Идентификатор, указывается при регистрации меню функцией register_nav_menu().
По умолчанию: ''
menu(строка)
Меню которое нужно вывести. Соответствие: id, слаг или название меню.
По умолчанию: ''
container(строка)
Чем оборачивать ul тег. Допустимо: div или nav.
Если не нужно оборачивать ничем, то пишем false: container => false.
По умолчанию: div
container_class(строка)
Значение атрибута class у контейнера меню.
По умолчанию: menu-{menu slug}-container
container_id(строка)
Значение атрибута id у контейнера меню.
По умолчанию: ''
menu_class(строка)
Значение атрибута class у тега ul.
По умолчанию: menu
menu_id(строка)
Значение атрибута id у тега ul.
По умолчанию: слаг меню
echo(логическое)
Выводить на экран (true) или возвратить для обработки (false).
По умолчанию: true
fallback_cb(строка)
Функция для обработки вывода, если никакое меню не найдено.
Передает все аргументы $args указанной тут функции.
Установите пустую строку » или ‘__return_empty_string’, чтобы ничего не выводилось, если меню нет.
По умолчанию: wp_page_menu
before(строка)
Текст перед тегом <a> в меню.
По умолчанию: ''
after(строка)
Текст после каждого тега в меню.
По умолчанию: ''
link_before(строка)
Текст перед анкором каждой ссылки в меню.
По умолчанию: ''
link_after(строка)
Текст после анкора каждой ссылки в меню.
По умолчанию: ''
items_wrap(строка)
Нужно ли оборачивать элементы в тег ul. Если нужно, указывается шаблон обертки.
По умолчанию: '<ul id="%1$s" class="%2$s">%3$s</ul>'
depth(число)
Сколько уровень вложенных друг в друга ссылок показывать. 0 — все уровни.
walker(объект)
Класса, который будет использоваться для построения меню. Нужно указывать объект, а не строку, например new My_Menu_Walker(). По умолчанию: Walker_Nav_Menu(). Как использовать смотрите ниже…
По умолчанию: Walker_Nav_Menu
item_spacing(строка)
Оставлять или нет переносы строк в HTML коде меню. Может быть: preserve или discard
По умолчанию: 'preserve'
Пример
Выводить меню, только если оно существует
По умолчанию, если меню нет, то вместо него будут выведены страницы сайта. Но если нужно выводить меню, только в том случае когда оно создано в админ-панели, укажите параметр fallback_cb
как '__return_empty_string'
:
wp_nav_menu( array( 'theme_location' => 'primary-menu', 'fallback_cb' => '__return_empty_string' ) );
Больше информации и примеров:
Используя PHP можно загружать содержимое SVG-файлов без лишних запросов к серверу, без использования img или…
[vc_message color=»alert-info»] Статья в процессе написания. Начинал писать ее в 2013 году, потом все менялось…
Создаем вариации для товаров в WooCommerce. 1. Во вкладке Product data выбираем Variable Product 2….
Задача — сделать красивый внешний вид для вариаций товаров в WooCommerce. По умолчанию, стандартный вид…