Changeset 18630 for trunk/wp-admin/widgets.php
- Timestamp:
- 09/02/2011 10:13:55 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/widgets.php
r18577 r18630 45 45 add_contextual_help($current_screen, $help); 46 46 47 // These are the widgets grouped by sidebar 48 $sidebars_widgets = wp_get_sidebars_widgets(); 49 50 if ( empty( $sidebars_widgets ) ) 51 $sidebars_widgets = wp_get_widget_defaults(); 52 47 53 // register the inactive_widgets area as sidebar 48 54 register_sidebar(array( 49 55 'name' => __('Inactive Widgets'), 50 56 'id' => 'wp_inactive_widgets', 57 'class' => 'inactive', 51 58 'description' => '', 52 59 'before_widget' => '', … … 56 63 )); 57 64 58 // These are the widgets grouped by sidebar 59 $sidebars_widgets = wp_get_sidebars_widgets(); 60 if ( empty( $sidebars_widgets ) ) 61 $sidebars_widgets = wp_get_widget_defaults(); 62 63 // look for "lost" widgets, this has to run at least on each theme change 64 function retrieve_widgets() { 65 global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets; 66 67 $_sidebars_widgets = array(); 68 $sidebars = array_keys($wp_registered_sidebars); 69 70 unset( $sidebars_widgets['array_version'] ); 71 72 $old = array_keys($sidebars_widgets); 73 sort($old); 74 sort($sidebars); 75 76 if ( $old == $sidebars ) 77 return; 78 79 // Move the known-good ones first 80 foreach ( $sidebars as $id ) { 81 if ( array_key_exists( $id, $sidebars_widgets ) ) { 82 $_sidebars_widgets[$id] = $sidebars_widgets[$id]; 83 unset($sidebars_widgets[$id], $sidebars[$id]); 84 } 85 } 86 87 // if new theme has less sidebars than the old theme 88 if ( !empty($sidebars_widgets) ) { 89 foreach ( $sidebars_widgets as $lost => $val ) { 90 if ( is_array($val) ) 91 $_sidebars_widgets['wp_inactive_widgets'] = array_merge( (array) $_sidebars_widgets['wp_inactive_widgets'], $val ); 92 } 93 } 94 95 // discard invalid, theme-specific widgets from sidebars 96 $shown_widgets = array(); 97 foreach ( $_sidebars_widgets as $sidebar => $widgets ) { 98 if ( !is_array($widgets) ) 99 continue; 100 101 $_widgets = array(); 102 foreach ( $widgets as $widget ) { 103 if ( isset($wp_registered_widgets[$widget]) ) 104 $_widgets[] = $widget; 105 } 106 $_sidebars_widgets[$sidebar] = $_widgets; 107 $shown_widgets = array_merge($shown_widgets, $_widgets); 108 } 109 110 $sidebars_widgets = $_sidebars_widgets; 111 unset($_sidebars_widgets, $_widgets); 112 113 // find hidden/lost multi-widget instances 114 $lost_widgets = array(); 115 foreach ( $wp_registered_widgets as $key => $val ) { 116 if ( in_array($key, $shown_widgets, true) ) 117 continue; 118 119 $number = preg_replace('/.+?-([0-9]+)$/', '$1', $key); 120 121 if ( 2 > (int) $number ) 122 continue; 123 124 $lost_widgets[] = $key; 125 } 126 127 $sidebars_widgets['wp_inactive_widgets'] = array_merge($lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets']); 128 wp_set_sidebars_widgets($sidebars_widgets); 129 } 65 foreach ( $sidebars_widgets as $sidebar_id => $widgets ) { 66 if ( empty( $wp_registered_sidebars[ $sidebar_id ] ) && ! empty( $widgets ) ) { 67 // register the inactive_widgets area as sidebar 68 register_sidebar(array( 69 'name' => __( 'Inactive Widgets (Previous Theme)' ), 70 'id' => $sidebar_id, 71 'class' => 'orphaned', 72 'description' => __( 'This is a left over sidebar from an old theme and does not show anywhere on your site' ), 73 'before_widget' => '', 74 'after_widget' => '', 75 'before_title' => '', 76 'after_title' => '', 77 )); 78 } 79 } 80 130 81 retrieve_widgets(); 131 82 … … 388 339 if ( 'wp_inactive_widgets' == $sidebar ) 389 340 continue; 390 $closed = $i ? ' closed' : ''; ?> 391 <div class="widgets-holder-wrap<?php echo $closed; ?>"> 341 342 $wrap_class = 'widgets-holder-wrap'; 343 if ( !empty( $registered_sidebar['class'] ) ) 344 $wrap_class .= ' sidebar-' . $registered_sidebar['class']; 345 346 if ( $i ) 347 $wrap_class .= ' closed'; ?> 348 349 <div class="<?php esc_attr_e( $wrap_class ); ?>"> 392 350 <div class="sidebar-name"> 393 351 <div class="sidebar-name-arrow"><br /></div>
Note: See TracChangeset
for help on using the changeset viewer.