Make WordPress Core

Ticket #33292: 33292.patch

File 33292.patch, 1.7 KB (added by dlh, 9 years ago)
  • src/wp-includes/widgets.php

     
    536536
    537537                $settings = get_option( $this->option_name );
    538538
    539                 if ( false === $settings && isset( $this->alt_option_name ) ) {
    540                         $settings = get_option( $this->alt_option_name );
     539                if ( false === $settings ) {
     540                        if ( isset( $this->alt_option_name ) ) {
     541                                $settings = get_option( $this->alt_option_name );
     542                        } else {
     543                                // Save an option so it can be autoloaded next time.
     544                                $this->save_settings( array() );
     545                        }
    541546                }
    542547
    543548                if ( ! is_array( $settings ) && ! ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) ) {
  • tests/phpunit/tests/widgets.php

     
    233233                $this->assertArrayHasKey( 'title', $instance );
    234234                unset( $option_value['_multiwidget'] );
    235235
     236                // Pretend this widget is new.
     237                delete_option( 'widget_nav_menu' );
     238                $never_used = get_option( 'widget_nav_menu' );
     239                $this->assertFalse( $never_used );
     240
    236241                wp_widgets_init();
    237242                $wp_widget_search = $wp_registered_widgets['search-2']['callback'][0];
    238243
     
    243248                foreach ( $option_value as $widget_number => $instance ) {
    244249                        $this->assertEquals( $settings[ $widget_number ], $option_value[ $widget_number ] );
    245250                }
     251
     252                // After widgets_init(), get_settings() should create the widget option.
     253                $never_used = get_option( 'widget_nav_menu' );
     254                $this->assertEquals( 1, $never_used['_multiwidget'] );
     255                $this->assertArrayNotHasKey( 0, $never_used );
    246256        }
    247257
    248258        /**