Changeset 11161
- Timestamp:
- 05/03/2009 07:53:54 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/widgets.php
r11160 r11161 41 41 // look for "lost" widgets, this has to run at least on each theme change 42 42 function retrieve_widgets() { 43 global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets ;43 global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets; 44 44 45 45 $_sidebars_widgets = array(); 46 46 $sidebars = array_keys($wp_registered_sidebars); 47 48 unset( $sidebars_widgets['array_version'] ); 47 49 48 50 $diff = array_diff( array_keys($sidebars_widgets), $sidebars ); 49 51 if ( empty($diff) ) 50 52 return; 51 52 unset( $sidebars_widgets['array_version'] );53 53 54 54 // Move the known-good ones first … … 60 60 } 61 61 62 // Assign to each unmatched registered sidebar the first available orphan63 while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) )64 $_sidebars_widgets[ $sidebar ] = $widgets;65 66 62 // if new theme has less sidebars than the old theme 67 63 if ( !empty($sidebars_widgets) ) { … … 71 67 } 72 68 } 69 70 // discard invalid, theme-specific widgets from sidebars 71 foreach ( $_sidebars_widgets as $sidebar => $widgets ) { 72 if ( !is_array($widgets) ) 73 continue; 74 75 $_widgets = array(); 76 foreach ( $widgets as $widget ) { 77 if ( isset($wp_registered_widgets[$widget]) ) 78 $_widgets[] = $widget; 79 } 80 $_sidebars_widgets[$sidebar] = $_widgets; 81 } 73 82 74 83 $sidebars_widgets = $_sidebars_widgets; 75 unset($_sidebars_widgets );84 unset($_sidebars_widgets, $_widgets); 76 85 77 86 // find hidden/lost multi-widget instances … … 106 115 107 116 $sidebars_widgets['wp_inactive_widgets'] = array_merge($lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets']); 108 $sidebars_widgets['array_version'] = 3;109 117 wp_set_sidebars_widgets($sidebars_widgets); 110 118 }
Note: See TracChangeset
for help on using the changeset viewer.