has_nav_menu()
Перевіряє, чи зареєстрована область для меню прикріплена до неї меню. Умовний тег.
Працює на основі:
get_nav_menu_locations()
get_nav_menu_locations()
Хуки з функції
Повертає
true|false
.
Використання
if( has_nav_menu( $location ) ){ // ... }
-
$location
(рядок) (обов’язковий) -
Ідентифікатор розташування меню, вказаний при реєстрації області меню функції
register_nav_menu() .
Приклади
#1 Виведемо меню, якщо воно є
Допустимо, у темі зареєстровано кілька областей для меню.
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( array( '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() has nav menu WP 6.0.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]); } /** * Filters whether a nav menu is assigned to the specified location. * * @ Since 4.3.0 * * @param bool $has_nav_menu Whether is a menu assigned to a location. * @param string $location Menu location. */ return apply_filters( 'has_nav_menu', $has_nav_menu, $location); }