From c2a18ab5fd49e5dc8e89b17f22f5faa97a988323 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Fri, 18 Nov 2011 06:00:29 +0000 Subject: [PATCH] When restoring sidebars after switching back to an old theme, make sure the saved data matches the theme's current sidebars, fixes #19092 git-svn-id: https://develop.svn.wordpress.org/trunk@19332 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/widgets.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/wp-includes/widgets.php b/wp-includes/widgets.php index d546f590e5..9d3e8bcf5a 100644 --- a/wp-includes/widgets.php +++ b/wp-includes/widgets.php @@ -1164,17 +1164,23 @@ function _wp_sidebars_changed() { function retrieve_widgets() { global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets; + $_sidebars_widgets = array(); + $sidebars = array_keys($wp_registered_sidebars); $old_sidebars_widgets = get_theme_mod( 'sidebars_widgets' ); if ( is_array( $old_sidebars_widgets ) ) { // time() that sidebars were stored is in $old_sidebars_widgets['time'] - $_sidebars_widgets = $old_sidebars_widgets['data']; + $old_sidebars = $old_sidebars_widgets['data']; + + // make sure the saved sidebars match + foreach ( $sidebars as $sidebar_id ) { + $_sidebars_widgets[$sidebar_id] = isset($old_sidebars[$sidebar_id]) ? $old_sidebars[$sidebar_id] : array(); + } + remove_theme_mod( 'sidebars_widgets' ); } else { if ( empty( $sidebars_widgets ) ) return; - $sidebars = array_keys($wp_registered_sidebars); - unset( $sidebars_widgets['array_version'] ); $old = array_keys($sidebars_widgets);