Changeset 42374 for trunk/src/wp-includes/widgets.php
- Timestamp:
- 12/07/2017 02:19:11 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/widgets.php
r42362 r42374 1220 1220 * 1221 1221 * @since 4.9.0 1222 * @since 4.9.2 Always tries to restore widget assignments from previous data, not just if sidebars needed mapping. 1222 1223 * 1223 1224 * @param array $existing_sidebars_widgets List of sidebars and their widget instance IDs. … … 1262 1263 } 1263 1264 1264 // If there are no old sidebars left, then we're done. 1265 if ( empty( $existing_sidebars_widgets ) ) { 1266 return $new_sidebars_widgets; 1267 } 1268 1269 /* 1270 * If old and new theme both have sidebars that contain phrases 1271 * from within the same group, make an educated guess and map it. 1272 */ 1273 $common_slug_groups = array( 1274 array( 'sidebar', 'primary', 'main', 'right' ), 1275 array( 'second', 'left' ), 1276 array( 'sidebar-2', 'footer', 'bottom' ), 1277 array( 'header', 'top' ), 1278 ); 1279 1280 // Go through each group... 1281 foreach ( $common_slug_groups as $slug_group ) { 1282 1283 // ...and see if any of these slugs... 1284 foreach ( $slug_group as $slug ) { 1285 1286 // ...and any of the new sidebars... 1287 foreach ( $wp_registered_sidebars as $new_sidebar => $args ) { 1288 1289 // ...actually match! 1290 if ( false === stripos( $new_sidebar, $slug ) && false === stripos( $slug, $new_sidebar ) ) { 1291 continue; 1292 } 1293 1294 // Then see if any of the existing sidebars... 1295 foreach ( $existing_sidebars_widgets as $sidebar => $widgets ) { 1296 1297 // ...and any slug in the same group... 1298 foreach ( $slug_group as $slug ) { 1299 1300 // ... have a match as well. 1301 if ( false === stripos( $sidebar, $slug ) && false === stripos( $slug, $sidebar ) ) { 1302 continue; 1303 } 1304 1305 // Make sure this sidebar wasn't mapped and removed previously. 1306 if ( ! empty( $existing_sidebars_widgets[ $sidebar ] ) ) { 1307 1308 // We have a match that can be mapped! 1309 $new_sidebars_widgets[ $new_sidebar ] = array_merge( $new_sidebars_widgets[ $new_sidebar ], $existing_sidebars_widgets[ $sidebar ] ); 1310 1311 // Remove the mapped sidebar so it can't be mapped again. 1312 unset( $existing_sidebars_widgets[ $sidebar ] ); 1313 1314 // Go back and check the next new sidebar. 1315 continue 3; 1316 } 1317 } // endforeach ( $slug_group as $slug ) 1318 } // endforeach ( $existing_sidebars_widgets as $sidebar => $widgets ) 1319 } // endforeach foreach ( $wp_registered_sidebars as $new_sidebar => $args ) 1320 } // endforeach ( $slug_group as $slug ) 1321 } // endforeach ( $common_slug_groups as $slug_group ) 1265 // If there are more sidebars, try to map them. 1266 if ( ! empty( $existing_sidebars_widgets ) ) { 1267 1268 /* 1269 * If old and new theme both have sidebars that contain phrases 1270 * from within the same group, make an educated guess and map it. 1271 */ 1272 $common_slug_groups = array( 1273 array( 'sidebar', 'primary', 'main', 'right' ), 1274 array( 'second', 'left' ), 1275 array( 'sidebar-2', 'footer', 'bottom' ), 1276 array( 'header', 'top' ), 1277 ); 1278 1279 // Go through each group... 1280 foreach ( $common_slug_groups as $slug_group ) { 1281 1282 // ...and see if any of these slugs... 1283 foreach ( $slug_group as $slug ) { 1284 1285 // ...and any of the new sidebars... 1286 foreach ( $wp_registered_sidebars as $new_sidebar => $args ) { 1287 1288 // ...actually match! 1289 if ( false === stripos( $new_sidebar, $slug ) && false === stripos( $slug, $new_sidebar ) ) { 1290 continue; 1291 } 1292 1293 // Then see if any of the existing sidebars... 1294 foreach ( $existing_sidebars_widgets as $sidebar => $widgets ) { 1295 1296 // ...and any slug in the same group... 1297 foreach ( $slug_group as $slug ) { 1298 1299 // ... have a match as well. 1300 if ( false === stripos( $sidebar, $slug ) && false === stripos( $slug, $sidebar ) ) { 1301 continue; 1302 } 1303 1304 // Make sure this sidebar wasn't mapped and removed previously. 1305 if ( ! empty( $existing_sidebars_widgets[ $sidebar ] ) ) { 1306 1307 // We have a match that can be mapped! 1308 $new_sidebars_widgets[ $new_sidebar ] = array_merge( $new_sidebars_widgets[ $new_sidebar ], $existing_sidebars_widgets[ $sidebar ] ); 1309 1310 // Remove the mapped sidebar so it can't be mapped again. 1311 unset( $existing_sidebars_widgets[ $sidebar ] ); 1312 1313 // Go back and check the next new sidebar. 1314 continue 3; 1315 } 1316 } // endforeach ( $slug_group as $slug ) 1317 } // endforeach ( $existing_sidebars_widgets as $sidebar => $widgets ) 1318 } // endforeach foreach ( $wp_registered_sidebars as $new_sidebar => $args ) 1319 } // endforeach ( $slug_group as $slug ) 1320 } // endforeach ( $common_slug_groups as $slug_group ) 1321 } 1322 1322 1323 1323 // Move any left over widgets to inactive sidebar. … … 1330 1330 // Sidebars_widgets settings from when this theme was previously active. 1331 1331 $old_sidebars_widgets = get_theme_mod( 'sidebars_widgets' ); 1332 $old_sidebars_widgets = $old_sidebars_widgets['data'];1332 $old_sidebars_widgets = isset( $old_sidebars_widgets['data'] ) ? $old_sidebars_widgets['data'] : false; 1333 1333 1334 1334 if ( is_array( $old_sidebars_widgets ) ) {
Note: See TracChangeset
for help on using the changeset viewer.