wp_get_nav_menu_name()
云策文档标注
概述
wp_get_nav_menu_name() 函数用于根据菜单位置标识符返回导航菜单的名称。它通过 get_nav_menu_locations() 和 wp_get_nav_menu_object() 获取菜单对象并提取名称,支持通过过滤器进行自定义。
关键要点
- 参数:$location(字符串,必需),菜单位置标识符。
- 返回值:字符串,菜单名称。
- 内部逻辑:先获取菜单位置映射,再通过 wp_get_nav_menu_object() 获取菜单对象,最后返回 name 属性。
- 过滤器:wp_get_nav_menu_name,允许在返回前修改菜单名称。
- 相关函数:get_nav_menu_locations()、wp_get_nav_menu_object()、apply_filters()。
- 版本:自 WordPress 4.9.0 引入。
代码示例
// 示例1:直接输出菜单名称
if ( has_nav_menu( 'theme_location' ) ) {
echo wp_get_nav_menu_name( 'theme_location' );
wp_nav_menu( 'theme_location' );
}
// 示例2:获取菜单对象并输出名称
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations['registered-menu-location-slug'] );
echo '' . wp_kses_post( $menu->name ) . '';
原文内容
Returns the name of a navigation menu.
Parameters
$locationstringrequired-
Menu location identifier.
Source
function wp_get_nav_menu_name( $location ) {
$menu_name = '';
$locations = get_nav_menu_locations();
if ( isset( $locations[ $location ] ) ) {
$menu = wp_get_nav_menu_object( $locations[ $location ] );
if ( $menu && $menu->name ) {
$menu_name = $menu->name;
}
}
/**
* Filters the navigation menu name being returned.
*
* @since 4.9.0
*
* @param string $menu_name Menu name.
* @param string $location Menu location identifier.
*/
return apply_filters( 'wp_get_nav_menu_name', $menu_name, $location );
}
Hooks
- apply_filters( ‘wp_get_nav_menu_name’, string $menu_name, string $location )
-
Filters the navigation menu name being returned.
Changelog
| Version | Description |
|---|---|
| 4.9.0 | Introduced. |
Skip to note 3 content
pixelstorm
Output the name of the menu before displaying the menus items to the user.
$locations = get_nav_menu_locations(); $menu = wp_get_nav_menu_object( $locations['registered-menu-location-slug'] ); echo '<div class="footer-menu__title">' . wp_kses_post( $menu->name ) . '</div>';Skip to note 4 content
Asadiyan
Dynamic title based on name of a navigation menu.
if ( has_nav_menu( 'theme_location' ) ) { echo wp_get_nav_menu_name( 'theme_location' ); wp_nav_menu( 'theme_location' ); }