WordPress.org

Make WordPress Core

Ticket #19092: 19092.patch

File 19092.patch, 1.4 KB (added by SergeyBiryukov, 4 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(