Функция get_registered_nav_menus()
в WordPress используется для получения всех зарегистрированных местоположений навигационных меню текущей темы. Это удобный способ управлять отображением меню, так как каждый элемент массива возвращает местоположение меню и его описание, заданные в файле темы functions.php
.
get_registered_nav_menus(): string[]
Функция возвращает ассоциативный массив, где ключи обозначают уникальные местоположения меню, а значения описывают, для чего предназначено конкретное меню (например, «Главное меню», «Меню в подвале» и т.д.). Если местоположения меню в теме не зарегистрированы, функция вернёт пустой массив.
Пример: Получение и вывод списка меню
Чтобы отобразить список всех зарегистрированных меню в активной теме, можно использовать следующий код. В примере будет выведен список всех местоположений меню и их описание.
<?php
// Получаем зарегистрированные меню в активной теме
$menus = get_registered_nav_menus();
// Перебираем массив и выводим название и описание меню
foreach ( $menus as $location => $description ) {
echo 'Местоположение меню: ' . $location . '<br>';
echo 'Описание: ' . $description . '<br><br>';
}
Пример вывода
Местоположение меню: primary-menu
Описание: Основное меню
Местоположение меню: footer-menu
Описание: Меню в подвале
Местоположение меню: social-menu
Описание: Социальные ссылки
Пример: Отображение меню в зависимости от местоположения
В этом примере мы используем get_registered_nav_menus()
для проверки наличия определённого меню и его отображения, если оно зарегистрировано.
<?php
// Получаем зарегистрированные меню
$menus = get_registered_nav_menus();
// Проверяем, зарегистрировано ли меню для местоположения 'footer-menu'
if ( array_key_exists( 'footer-menu', $menus ) ) {
echo '<p>Меню для подвала зарегистрировано: ' . $menus['footer-menu'] . '</p>';
} else {
echo '<p>Меню для подвала не зарегистрировано.</p>';
}
Этот код полезен для отображения меню в шаблонах с проверкой наличия нужного местоположения.
Пример: Добавление условия для разных меню
Вы можете использовать get_registered_nav_menus()
вместе с функцией wp_nav_menu()
для настройки отображения меню на основе различных условий. Например, покажем «Главное меню» на главной странице и «Меню в подвале» на всех остальных.
<?php
// Получаем зарегистрированные меню
$menus = get_registered_nav_menus();
// Проверяем условие отображения
if ( is_front_page() && array_key_exists( 'main-menu', $menus ) ) {
wp_nav_menu( array( 'theme_location' => 'main-menu' ) );
} elseif ( array_key_exists( 'footer-menu', $menus ) ) {
wp_nav_menu( array( 'theme_location' => 'footer-menu' ) );
}
Пример: Использование get_registered_nav_menus()
для создания выпадающего списка
Иногда требуется показать зарегистрированные меню в виде выпадающего списка. Используем get_registered_nav_menus()
для создания простого <select>
списка, где значения option
будут содержать местоположения меню.
<?php
// Получаем зарегистрированные меню
$menus = get_registered_nav_menus();
// Создаем выпадающий список
echo '<select name="menu_location">';
foreach ( $menus as $location => $description ) {
echo '<option value="' . $location . '">' . $description . '</option>';
}
echo '</select>';
Пример: Вывод списка всех зарегистрированных меню с их значениями
Если нужно вывести данные, используя print_r()
, для более детального изучения структуры, можно сделать так:
<?php
// Выводим все зарегистрированные меню с их значениями
echo '<pre>';
print_r( get_registered_nav_menus() );
echo '</pre>';
Возможный результат
Array
(
[main-menu] => Главное меню
[footer-menu] => Меню в подвале
[social-links] => Социальные ссылки
)
Заключение
Функция get_registered_nav_menus()
— это удобный способ для получения информации о доступных меню в теме и гибкой настройки их отображения. Вы можете применять её для создания списка меню, условного показа и даже для динамической настройки местоположений в административной панели.