Menus: Introduce `wp_get_nav_menu_name()` to retrieve the name of a navigation menu as set in the admin.

Props markoheijnen, christophherr, SpencerFinnell, wojtek.szkutnik, sagarprajapati, welcher, SergeyBiryukov.
Fixes #13910.

git-svn-id: https://develop.svn.wordpress.org/trunk@41766 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2017-10-05 01:37:39 +00:00
parent 0bff7272e8
commit cfe1b4476b
2 changed files with 51 additions and 0 deletions

View File

@ -184,6 +184,38 @@ function has_nav_menu( $location ) {
return apply_filters( 'has_nav_menu', $has_nav_menu, $location );
}
/**
* Returns the name of a navigation menu.
*
* @since 4.9.0
*
* @param string $location Menu location identifier.
* @return string Menu name.
*/
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 );
}
/**
* Determines whether the given ID is a nav menu item.
*

View File

@ -158,6 +158,25 @@ class Test_Nav_Menus extends WP_UnitTestCase {
$this->assertEquals( $t, $menu_items[0]->object_id );
}
/**
* @ticket 13910
*/
function test_wp_get_nav_menu_name() {
// Register a nav menu location.
register_nav_menu( 'primary', 'Primary Navigation' );
// Create a menu with a title.
$menu = wp_create_nav_menu( 'My Menu' );
// Assign the menu to the `primary` location.
$locations = get_nav_menu_locations();
$menu_obj = wp_get_nav_menu_object( $menu );
$locations['primary'] = $menu_obj->term_id;
set_theme_mod( 'nav_menu_locations', $locations );
$this->assertEquals( 'My Menu', wp_get_nav_menu_name( 'primary' ) );
}
/**
* @ticket 29460
*/