has_nav_menu() WP 3.0.0

Перевіряє, чи зареєстрована область для меню прикріплена до неї меню. Умовний тег.

Працює на основі:
get_nav_menu_locations()

Хуки з функції

Повертає

true|false.

Використання

if( has_nav_menu( $location ) ){
	// ...
}
$location
(рядок) (обов’язковий)
Ідентифікатор розташування меню, вказаний при реєстрації області меню функції
register_nav_menu() .

Приклади

0

#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() 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);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *