Make WordPress Core

Changeset 27220


Ignore:
Timestamp:
02/21/2014 06:13:52 PM (11 years ago)
Author:
nacin
Message:

Remove theme support for 'menus' in unregister_nav_menu() when there are no more menus.

props kovshenin.
fixes #26900.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/nav-menu.php

    r27150 r27220  
    9191    if ( is_array( $_wp_registered_nav_menus ) && isset( $_wp_registered_nav_menus[$location] ) ) {
    9292        unset( $_wp_registered_nav_menus[$location] );
     93        if ( empty( $_wp_registered_nav_menus ) ) {
     94            _remove_theme_support( 'menus' );
     95        }
    9396        return true;
    9497    }
  • trunk/tests/phpunit/tests/theme/support.php

    r25785 r27220  
    157157        $this->assertFalse( current_theme_supports( 'foobar', 'bar' ) );
    158158    }
     159
     160    /**
     161     * @ticket 26900
     162     */
     163    function test_supports_menus() {
     164        // Start fresh
     165        _remove_theme_support( 'menus' );
     166        $this->assertFalse( current_theme_supports( 'menus' ) );
     167
     168        // Registering a nav menu automatically adds support.
     169        register_nav_menu( 'primary', 'Primary Navigation' );
     170        register_nav_menu( 'secondary', 'Secondary Navigation' );
     171        $this->assertTrue( current_theme_supports( 'menus' ) );
     172
     173        // Support added internally, can't be removed.
     174        remove_theme_support( 'menus' );
     175        $this->assertTrue( current_theme_supports( 'menus' ) );
     176
     177        // Still supports because of secondary.
     178        unregister_nav_menu( 'primary' );
     179        $this->assertTrue( current_theme_supports( 'menus' ) );
     180
     181        // No longer support because we have no menus.
     182        unregister_nav_menu( 'secondary' );
     183        $this->assertEmpty( get_registered_nav_menus() );
     184        $this->assertFalse( current_theme_supports( 'menus' ) );
     185    }
    159186}
Note: See TracChangeset for help on using the changeset viewer.