# Функция HAS_NAV_MENU() │ WP 3.0.0
Эта функция позволяет определить, назначено ли меню в зарегистрированном месте для навигации (навигационном меню).
## Использует
get_nav_menu_locations()
## ХУКИ ОТ ФУНКЦИИ
has_nav_menu
## РЕЗУЛЬТАТ
Возвращает true или false: есть ли назначенное меню в указанном месте.
## ИСПОЛЬЗОВАНИЕ
```php
has_nav_menu( $location );
Аргументы
$location(строка, обязательный) — идентификатор места для меню.
ПРИМЕРЫ
Пример 1: Основное использование
if ( has_nav_menu( 'primary' ) ) {
wp_nav_menu( [ 'theme_location' => 'primary' ] );
}
Пример 2: Отображение меню, если оно есть
Предположим, в вашей теме зарегистрировано несколько зон для меню.
Код в functions.php
add_action( 'after_setup_theme', function () {
// Общие настройки темы
// ...
// Регистрация зон для меню
register_nav_menus( array(
'header-menu' => 'Область верхнего меню',
'footer-menu' => 'Область нижнего меню',
) );
} );
Теперь давайте проверим, прикреплено ли меню к указанной области, и если да, то отобразим его:
Код в header.php
if( has_nav_menu( 'header-menu' ) ){
wp_nav_menu( [ 'theme_location' => 'header-menu' ] );
}
Код в footer.php
if( has_nav_menu('footer-menu') ){
wp_nav_menu( array( 'theme_location' => 'footer-menu' ) );
}
ИЗМЕНЕНИЯ В ВЕРСИЯХ
С версии 3.0.0 — впервые представлена.
КОД ФУНКЦИИ HAS_NAV_MENU() В WP 6.7.2
function has_nav_menu( $location ) {
$has_nav_menu = false;
$registered_nav_menus = get_registered_nav_menus();
if ( isset( $registered_nav_menus[ $location ] ) ) {
$locations = get_nav_menu_locations();
$has_nav_menu = ! empty( $locations[ $location ] );
}
/**
* Фильтрует, назначено ли меню к указанному месту.
*
* @since 4.3.0
*
* @param bool $has_nav_menu Есть ли меню, назначенное к месту.
* @param string $location Место для меню.
*/
return apply_filters( 'has_nav_menu', $has_nav_menu, $location );
}
СВЯЗАННЫЕ ФУНКЦИИ
get_nav_menu_locations()wp_nav_menu()register_nav_menu()register_nav_menus()
УСЛОВНЫЕ ТЭГИ
Функции, которые могут быть полезны в условных операциях:
is_front_page()is_single()is_page()is_archive()is_category()is_tag()
Заметка
Не забывайте, что прежде чем использовать has_nav_menu(), необходимо зарегистрировать меню в вашей теме. Это позволит правильно обрабатывать все запросы к меню и отображать их в нужных местах на сайте.