Функция register_nav_menu()
в WordPress используется для регистрации одной области (местоположения) для навигационного меню в теме. Это позволяет разработчикам тем гибко управлять навигацией на сайте, предоставляя возможность администратору привязывать меню к зарегистрированным местоположениям через административную панель.
register_nav_menu( string $location, string $description )
Параметры
- $location (строка) — Обязательный параметр. Идентификатор (slug) для меню, который будет использоваться в теме для ссылки на данное место.
- $description (строка) — Обязательный параметр. Описание области меню, которое будет отображаться в админке WordPress, помогающее администраторам сайта понять, где будет выводиться меню.
Возвращаемое значение
- null — Функция не возвращает значения, а просто регистрирует местоположение для меню.
Описание
Функция register_nav_menu()
регистрирует одно местоположение для навигационного меню в теме. После регистрации меню можно настраивать в разделе «Внешний вид» → «Меню» административной панели WordPress и привязывать к этому месту любое меню, созданное в админке.
Регистрация основного меню
В следующем примере регистрируется одно меню с идентификатором primary
и описанием «Primary Menu», которое будет использоваться для основной навигации сайта. Этот код добавляется в файл functions.php
темы.
<?php
add_action( 'after_setup_theme', 'register_my_menu' );
function register_my_menu() {
register_nav_menu( 'primary', __( 'Primary Menu', 'theme-slug' ) );
}
После регистрации меню можно вывести его в шаблоне, например, в шапке сайта с помощью функции wp_nav_menu()
:
<?php
if ( has_nav_menu( 'primary' ) ) {
wp_nav_menu( array(
'theme_location' => 'primary',
'container' => 'nav',
'container_class'=> 'primary-menu',
) );
}
Как это работает
После того как меню зарегистрировано через register_nav_menu()
, в админке WordPress в разделе «Внешний вид» → «Меню» появляется новое место для привязки меню. Администратор может создать меню, добавить в него элементы (страницы, категории, внешние ссылки и т.д.), а затем выбрать это меню для отображения в зарегистрированном месте.
Регистрация нескольких меню
Если необходимо зарегистрировать несколько местоположений для меню, можно использовать функцию register_nav_menus()
. Пример:
<?php
add_action( 'after_setup_theme', 'register_multiple_menus' );
function register_multiple_menus() {
register_nav_menus( array(
'primary' => __( 'Primary Menu', 'theme-slug' ),
'footer' => __( 'Footer Menu', 'theme-slug' ),
) );
}
Важные моменты
- Не нужно вызывать
add_theme_support( 'menus' )
. Функцияregister_nav_menu()
автоматически регистрирует поддержку произвольных меню для темы. - Используйте
wp_nav_menu()
для отображения зарегистрированных меню на сайте. Эта функция позволяет вывести меню в любом месте шаблона, связав его с зарегистрированной областью через параметрtheme_location
. - Отображение в админке. Описание, переданное в качестве второго аргумента, поможет администраторам понять, для какого места на сайте они привязывают меню.
Заключение
Функция register_nav_menu()
предоставляет разработчикам простой и эффективный способ добавления навигационных меню в тему WordPress. Она позволяет легко регистрировать места для меню, которые затем можно редактировать через административную панель, добавляя ссылки на страницы, категории, метки и другие элементы.