Ticket #10300: 10300.3.diff
File 10300.3.diff, 2.8 KB (added by , 16 years ago) |
---|
-
wp-includes/widgets.php
967 967 if ( empty($_wp_sidebars_widgets) ) 968 968 $sidebars_widgets = get_option('sidebars_widgets', array()); 969 969 else 970 $sidebars_widgets = &$_wp_sidebars_widgets;970 return apply_filters('sidebars_widgets', $_wp_sidebars_widgets); 971 971 } 972 972 $_sidebars_widgets = array(); 973 973 … … 1024 1024 } 1025 1025 } 1026 1026 1027 // Assign to each unmatched registered sidebar the first available orphan 1028 unset( $sidebars_widgets[ 'array_version' ] ); 1029 while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) ) 1030 $_sidebars_widgets[ $sidebar ] = $widgets; 1027 // move the rest to wp_inactive_widgets 1028 if ( !isset($_sidebars_widgets['wp_inactive_widgets']) ) 1029 $_sidebars_widgets['wp_inactive_widgets'] = array(); 1030 1031 if ( !empty($sidebars_widgets) ) { 1032 foreach ( $sidebars_widgets as $lost => $val ) { 1033 if ( is_array($val) ) 1034 $_sidebars_widgets['wp_inactive_widgets'] = array_merge( (array) $_sidebars_widgets['wp_inactive_widgets'], $val ); 1035 } 1036 } 1031 1037 1032 $_sidebars_widgets['array_version'] = 3;1033 1038 $sidebars_widgets = $_sidebars_widgets; 1034 1039 unset($_sidebars_widgets); 1035 1040 } 1041 1042 $sidebars_widgets['array_version'] = 3; 1036 1043 1037 1044 if ( $update && is_admin() ) 1038 1045 update_option('sidebars_widgets', $sidebars_widgets); … … 1041 1048 if ( isset($sidebars_widgets['array_version']) ) 1042 1049 unset($sidebars_widgets['array_version']); 1043 1050 1051 if ( !is_admin() ) 1052 $_wp_sidebars_widgets = $sidebars_widgets; 1053 1044 1054 $sidebars_widgets = apply_filters('sidebars_widgets', $sidebars_widgets); 1045 1055 return $sidebars_widgets; 1046 1056 } … … 1087 1097 */ 1088 1098 function wp_convert_widget_settings($base_name, $option_name, $settings) { 1089 1099 global $_wp_sidebars_widgets; 1100 1090 1101 // This test may need expanding. 1091 $single = false;1102 $single = $changed = false; 1092 1103 if ( empty($settings) ) { 1093 1104 $single = true; 1094 1105 } else { … … 1109 1120 if ( is_admin() ) { 1110 1121 $sidebars_widgets = get_option('sidebars_widgets'); 1111 1122 } else { 1112 if ( empty($ GLOBALS['_wp_sidebars_widgets']) )1113 $GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets');1114 $sidebars_widgets = &$ GLOBALS['_wp_sidebars_widgets'];1123 if ( empty($_wp_sidebars_widgets) ) 1124 wp_get_sidebars_widgets(false); 1125 $sidebars_widgets = &$_wp_sidebars_widgets; 1115 1126 } 1116 1127 1117 1128 foreach ( (array) $sidebars_widgets as $index => $sidebar ) { … … 1119 1130 foreach ( $sidebar as $i => $name ) { 1120 1131 if ( $base_name == $name ) { 1121 1132 $sidebars_widgets[$index][$i] = "$name-2"; 1133 $changed = true; 1122 1134 break 2; 1123 1135 } 1124 1136 } 1125 1137 } 1126 1138 } 1127 1139 1128 if ( is_admin() )1140 if ( is_admin() && $changed ) 1129 1141 update_option('sidebars_widgets', $sidebars_widgets); 1130 1142 } 1131 1143