Функция has_nav_menu()
в WordPress проверяет, назначено ли меню для заданной области меню (меню-локации). Эта функция возвращает true
, если для указанной области меню назначено меню, и false
в противном случае. Она полезна для условного отображения контента в зависимости от того, задано ли меню для определенной области.
bool has_nav_menu( string $location )
Параметры
- $location (string): Область меню, которую вы хотите проверить. Это значение должно совпадать с именем локации меню, как она была зарегистрирована в вашей теме.
Возвращаемое значение
- (bool): Возвращает
true
, если для указанной области меню назначено меню, иfalse
, если меню не назначено.
Пример 1: Проверка наличия меню для основной области меню
Этот пример показывает, как проверить, назначено ли меню для основной области меню, и выполнить действия в зависимости от этого.
if ( has_nav_menu( 'primary' ) ) {
// Основное меню назначено
echo '<p>Основное меню активно.</p>';
} else {
// Основное меню не назначено
echo '<p>Основное меню не назначено.</p>';
}
В этом примере primary
— это локация меню, которую вы зарегистрировали в своей теме. Вы можете использовать этот код для проверки, назначено ли меню для основной области меню и отображать соответствующее сообщение.
Пример 2: Условное отображение меню в шаблоне
В этом примере демонстрируется, как отобразить меню только если для указанной области меню назначено меню.
if ( has_nav_menu( 'header-menu' ) ) {
wp_nav_menu( array(
'theme_location' => 'header-menu',
'container' => 'nav',
'container_class'=> 'header-nav',
'menu_class' => 'header-menu',
) );
}
Здесь header-menu
— это локация меню, зарегистрированная для области меню в заголовке. Если меню назначено для этой области, функция wp_nav_menu()
выводит меню с заданными параметрами.
Пример 3: Проверка наличия меню в нескольких областях
Этот пример показывает, как проверить, назначено ли меню в нескольких областях меню.
if ( has_nav_menu( 'primary' ) || has_nav_menu( 'footer' ) ) {
// Проверка, назначено ли меню для основной или футерной области
echo '<p>Есть активные меню в основной или футерной области.</p>';
} else {
echo '<p>Нет активных меню в основной и футерной областях.</p>';
}
В этом примере проверяется, назначено ли меню для одной из двух областей: основной или футерной.
Пример 4: Отображение альтернативного контента в зависимости от наличия меню
В этом примере показано, как можно отобразить альтернативный контент, если для заданной области меню не назначено меню.
if ( has_nav_menu( 'footer-menu' ) ) {
wp_nav_menu( array(
'theme_location' => 'footer-menu',
'container' => 'nav',
'container_class'=> 'footer-nav',
'menu_class' => 'footer-menu',
) );
} else {
echo '<p>Меню для футера не задано.</p>';
}
Этот код проверяет наличие меню для области footer-menu
, и если меню назначено, то оно выводится, иначе отображается сообщение о том, что меню для футера не задано.
Регистрация областей меню
Чтобы функция has_nav_menu()
могла работать, вам нужно зарегистрировать области меню в вашей теме. Пример регистрации нескольких областей меню:
function register_my_menus() {
register_nav_menus(
array(
'primary' => __( 'Primary Menu' ),
'footer' => __( 'Footer Menu' ),
'header-menu' => __( 'Header Menu' ),
'sidebar-menu' => __( 'Sidebar' ),
)
);
}
add_action( 'init', 'register_my_menus' );
Заключение
Функция has_nav_menu()
в WordPress является полезным инструментом для проверки наличия назначенного меню в различных областях вашего сайта. Она позволяет вам условно управлять отображением меню и выполнением других действий в зависимости от того, назначено ли меню для определенной локации.
Используя has_nav_menu()
, вы можете сделать ваш сайт более гибким и адаптивным, улучшая пользовательский опыт.