Changeset 42375
- Timestamp:
- 12/07/2017 02:22:55 AM (7 years ago)
- Location:
- branches/4.9
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/4.9
-
branches/4.9/src/wp-includes/widgets.php
r42363 r42375 1181 1181 * 1182 1182 * @since 4.9.0 1183 * @since 4.9.2 Always tries to restore widget assignments from previous data, not just if sidebars needed mapping. 1183 1184 * 1184 1185 * @param array $existing_sidebars_widgets List of sidebars and their widget instance IDs. … … 1223 1224 } 1224 1225 1225 // If there are no old sidebars left, then we're done. 1226 if ( empty( $existing_sidebars_widgets ) ) { 1227 return $new_sidebars_widgets; 1228 } 1229 1230 /* 1231 * If old and new theme both have sidebars that contain phrases 1232 * from within the same group, make an educated guess and map it. 1233 */ 1234 $common_slug_groups = array( 1235 array( 'sidebar', 'primary', 'main', 'right' ), 1236 array( 'second', 'left' ), 1237 array( 'sidebar-2', 'footer', 'bottom' ), 1238 array( 'header', 'top' ), 1239 ); 1240 1241 // Go through each group... 1242 foreach ( $common_slug_groups as $slug_group ) { 1243 1244 // ...and see if any of these slugs... 1245 foreach ( $slug_group as $slug ) { 1246 1247 // ...and any of the new sidebars... 1248 foreach ( $wp_registered_sidebars as $new_sidebar => $args ) { 1249 1250 // ...actually match! 1251 if ( false === stripos( $new_sidebar, $slug ) && false === stripos( $slug, $new_sidebar ) ) { 1252 continue; 1253 } 1254 1255 // Then see if any of the existing sidebars... 1256 foreach ( $existing_sidebars_widgets as $sidebar => $widgets ) { 1257 1258 // ...and any slug in the same group... 1259 foreach ( $slug_group as $slug ) { 1260 1261 // ... have a match as well. 1262 if ( false === stripos( $sidebar, $slug ) && false === stripos( $slug, $sidebar ) ) { 1263 continue; 1264 } 1265 1266 // Make sure this sidebar wasn't mapped and removed previously. 1267 if ( ! empty( $existing_sidebars_widgets[ $sidebar ] ) ) { 1268 1269 // We have a match that can be mapped! 1270 $new_sidebars_widgets[ $new_sidebar ] = array_merge( $new_sidebars_widgets[ $new_sidebar ], $existing_sidebars_widgets[ $sidebar ] ); 1271 1272 // Remove the mapped sidebar so it can't be mapped again. 1273 unset( $existing_sidebars_widgets[ $sidebar ] ); 1274 1275 // Go back and check the next new sidebar. 1276 continue 3; 1277 } 1278 } // endforeach ( $slug_group as $slug ) 1279 } // endforeach ( $existing_sidebars_widgets as $sidebar => $widgets ) 1280 } // endforeach foreach ( $wp_registered_sidebars as $new_sidebar => $args ) 1281 } // endforeach ( $slug_group as $slug ) 1282 } // endforeach ( $common_slug_groups as $slug_group ) 1226 // If there are more sidebars, try to map them. 1227 if ( ! empty( $existing_sidebars_widgets ) ) { 1228 1229 /* 1230 * If old and new theme both have sidebars that contain phrases 1231 * from within the same group, make an educated guess and map it. 1232 */ 1233 $common_slug_groups = array( 1234 array( 'sidebar', 'primary', 'main', 'right' ), 1235 array( 'second', 'left' ), 1236 array( 'sidebar-2', 'footer', 'bottom' ), 1237 array( 'header', 'top' ), 1238 ); 1239 1240 // Go through each group... 1241 foreach ( $common_slug_groups as $slug_group ) { 1242 1243 // ...and see if any of these slugs... 1244 foreach ( $slug_group as $slug ) { 1245 1246 // ...and any of the new sidebars... 1247 foreach ( $wp_registered_sidebars as $new_sidebar => $args ) { 1248 1249 // ...actually match! 1250 if ( false === stripos( $new_sidebar, $slug ) && false === stripos( $slug, $new_sidebar ) ) { 1251 continue; 1252 } 1253 1254 // Then see if any of the existing sidebars... 1255 foreach ( $existing_sidebars_widgets as $sidebar => $widgets ) { 1256 1257 // ...and any slug in the same group... 1258 foreach ( $slug_group as $slug ) { 1259 1260 // ... have a match as well. 1261 if ( false === stripos( $sidebar, $slug ) && false === stripos( $slug, $sidebar ) ) { 1262 continue; 1263 } 1264 1265 // Make sure this sidebar wasn't mapped and removed previously. 1266 if ( ! empty( $existing_sidebars_widgets[ $sidebar ] ) ) { 1267 1268 // We have a match that can be mapped! 1269 $new_sidebars_widgets[ $new_sidebar ] = array_merge( $new_sidebars_widgets[ $new_sidebar ], $existing_sidebars_widgets[ $sidebar ] ); 1270 1271 // Remove the mapped sidebar so it can't be mapped again. 1272 unset( $existing_sidebars_widgets[ $sidebar ] ); 1273 1274 // Go back and check the next new sidebar. 1275 continue 3; 1276 } 1277 } // endforeach ( $slug_group as $slug ) 1278 } // endforeach ( $existing_sidebars_widgets as $sidebar => $widgets ) 1279 } // endforeach foreach ( $wp_registered_sidebars as $new_sidebar => $args ) 1280 } // endforeach ( $slug_group as $slug ) 1281 } // endforeach ( $common_slug_groups as $slug_group ) 1282 } 1283 1283 1284 1284 // Move any left over widgets to inactive sidebar. … … 1291 1291 // Sidebars_widgets settings from when this theme was previously active. 1292 1292 $old_sidebars_widgets = get_theme_mod( 'sidebars_widgets' ); 1293 $old_sidebars_widgets = $old_sidebars_widgets['data'];1293 $old_sidebars_widgets = isset( $old_sidebars_widgets['data'] ) ? $old_sidebars_widgets['data'] : false; 1294 1294 1295 1295 if ( is_array( $old_sidebars_widgets ) ) {
Note: See TracChangeset
for help on using the changeset viewer.