Функция is_nav_menu()
в WordPress используется для проверки существования навигационного меню по его ID, ярлыку (slug), названию или объекту меню (WP_Term
). Она возвращает true
, если указанное меню существует, и false
, если оно не найдено. Это полезная функция при работе с динамическими сайтами, где меню могут быть созданы и удалены через админку WordPress.
is_nav_menu( int|string|WP_Term $menu ): bool
Параметры
$menu
(int|string|WP_Term) — Обязательный параметр. Может быть ID меню, его slug, название или объектWP_Term
, представляющий меню, которое нужно проверить.
Возвращаемое значение
Функция возвращает:
true
— Если меню с указанным ID, ярлыком, названием или объектом существует.false
— Если меню не существует.
Пример 1: Проверка меню по ID
Если у вас есть ID меню и нужно проверить, существует ли оно, используйте следующий код:
$menu_id = 42; // Укажите ID меню
if ( is_nav_menu( $menu_id ) ) {
echo 'Меню с ID 42 существует.';
} else {
echo 'Меню с ID 42 не найдено.';
}
Этот код проверяет, существует ли меню с ID 42
. Если меню найдено, выводится сообщение, что оно существует.
Пример 2: Проверка меню по slug
Вы также можете использовать slug меню для проверки его существования:
$menu_slug = 'header-menu'; // Slug меню
if ( is_nav_menu( $menu_slug ) ) {
echo 'Меню с ярлыком "header-menu" существует.';
} else {
echo 'Меню с ярлыком "header-menu" не найдено.';
}
В данном примере используется slug header-menu
для проверки наличия меню. Если меню существует, будет выведено соответствующее сообщение.
Пример 3: Проверка меню по названию
Для проверки меню по его названию можно передать строку с названием меню:
$menu_name = 'Главное меню'; // Название меню
if ( is_nav_menu( $menu_name ) ) {
echo 'Меню с названием "Главное меню" существует.';
} else {
echo 'Меню с названием "Главное меню" не найдено.';
}
Этот код проверяет существование меню с названием «Главное меню».
Пример 4: Проверка меню по объекту WP_Term
Вы можете также проверить меню, используя объект WP_Term
, который представляет собой меню:
$menu_obj = wp_get_nav_menu_object( 'footer-menu' ); // Получаем объект меню
if ( $menu_obj && is_nav_menu( $menu_obj ) ) {
echo 'Меню существует и доступно.';
} else {
echo 'Меню не найдено.';
}
Этот пример сначала получает объект меню с помощью функции wp_get_nav_menu_object()
, а затем проверяет его существование с помощью is_nav_menu()
.
Пример 5: Использование в условиях
Функцию is_nav_menu()
можно применять для условного выполнения кода. Например, если меню существует, мы можем вывести его с помощью wp_nav_menu()
:
$menu_slug = 'sidebar-menu';
if ( is_nav_menu( $menu_slug ) ) {
wp_nav_menu( array( 'theme_location' => $menu_slug ) );
} else {
echo 'Меню не найдено.';
}
Этот код сначала проверяет наличие меню с ярлыком sidebar-menu
, и если оно существует, выводит его на страницу.
Заключение
Функция is_nav_menu()
— это полезный инструмент для проверки существования навигационных меню в WordPress. Она помогает избежать ошибок при попытке вывести меню, которое может не существовать, особенно на динамических сайтах. Вы можете использовать её для проверки меню по ID, slug, названию или объекту, что делает её гибкой в различных сценариях разработки.