WordPress.org

Make WordPress Core

Ticket #19092: 19092.patch

File 19092.patch, 1.4 KB (added by SergeyBiryukov, 7 years ago)
  • wp-includes/widgets.php

     
    11641164function retrieve_widgets() {
    11651165        global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets;
    11661166
     1167        $registered_sidebar_keys = array_keys($wp_registered_sidebars);
     1168
    11671169        $old_sidebars_widgets = get_theme_mod( 'sidebars_widgets' );
    11681170        if ( is_array( $old_sidebars_widgets ) ) {
    11691171                // time() that sidebars were stored is in $old_sidebars_widgets['time']
    11701172                $_sidebars_widgets = $old_sidebars_widgets['data'];
    11711173                remove_theme_mod( 'sidebars_widgets' );
     1174
     1175                $orphaned = 0;
     1176
     1177                foreach ( $_sidebars_widgets as $sidebar => $widgets ) {
     1178                        if ( 'wp_inactive_widgets' == $sidebar || 'orphaned_widgets' == substr( $sidebar, 0, 16 ) )
     1179                                continue;
     1180
     1181                        if ( !in_array( $sidebar, $registered_sidebar_keys ) ) {
     1182                                $_sidebars_widgets['orphaned_widgets_' . ++$orphaned] = $widgets;
     1183                                unset( $_sidebars_widgets[$sidebar] );
     1184                        }
     1185                }
    11721186        } else {
    11731187                if ( empty( $sidebars_widgets ) )
    11741188                        return;
    11751189
    1176                 $sidebars = array_keys($wp_registered_sidebars);
    1177 
    11781190                unset( $sidebars_widgets['array_version'] );
    11791191
    11801192                $old = array_keys($sidebars_widgets);
    11811193                sort($old);
    1182                 sort($sidebars);
     1194                sort($registered_sidebar_keys);
    11831195
    1184                 if ( $old == $sidebars )
     1196                if ( $old == $registered_sidebar_keys )
    11851197                        return;
    11861198
    11871199                $_sidebars_widgets = array(