Remove theme support for 'menus' in unregister_nav_menu() when there are no more menus.
props kovshenin. fixes #26900. git-svn-id: https://develop.svn.wordpress.org/trunk@27220 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
4cfcdabdd8
commit
b74f222d33
@ -90,6 +90,9 @@ function unregister_nav_menu( $location ) {
|
||||
|
||||
if ( is_array( $_wp_registered_nav_menus ) && isset( $_wp_registered_nav_menus[$location] ) ) {
|
||||
unset( $_wp_registered_nav_menus[$location] );
|
||||
if ( empty( $_wp_registered_nav_menus ) ) {
|
||||
_remove_theme_support( 'menus' );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -156,4 +156,31 @@ class Tests_Theme_Support extends WP_UnitTestCase {
|
||||
remove_theme_support( 'foobar' );
|
||||
$this->assertFalse( current_theme_supports( 'foobar', 'bar' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 26900
|
||||
*/
|
||||
function test_supports_menus() {
|
||||
// Start fresh
|
||||
_remove_theme_support( 'menus' );
|
||||
$this->assertFalse( current_theme_supports( 'menus' ) );
|
||||
|
||||
// Registering a nav menu automatically adds support.
|
||||
register_nav_menu( 'primary', 'Primary Navigation' );
|
||||
register_nav_menu( 'secondary', 'Secondary Navigation' );
|
||||
$this->assertTrue( current_theme_supports( 'menus' ) );
|
||||
|
||||
// Support added internally, can't be removed.
|
||||
remove_theme_support( 'menus' );
|
||||
$this->assertTrue( current_theme_supports( 'menus' ) );
|
||||
|
||||
// Still supports because of secondary.
|
||||
unregister_nav_menu( 'primary' );
|
||||
$this->assertTrue( current_theme_supports( 'menus' ) );
|
||||
|
||||
// No longer support because we have no menus.
|
||||
unregister_nav_menu( 'secondary' );
|
||||
$this->assertEmpty( get_registered_nav_menus() );
|
||||
$this->assertFalse( current_theme_supports( 'menus' ) );
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user