diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php
index 18a1d76..8ed4e69 100644
|
|
|
final class WP_Customize_Manager { |
| 575 | 575 | // to operate properly. |
| 576 | 576 | $this->stop_previewing_theme(); |
| 577 | 577 | switch_theme( $this->get_stylesheet() ); |
| | 578 | update_option( 'theme_switched_via_customizer', true ); |
| 578 | 579 | $this->start_previewing_theme(); |
| 579 | 580 | } |
| 580 | 581 | |
diff --git src/wp-includes/class-wp-customize-widgets.php src/wp-includes/class-wp-customize-widgets.php
index 72ff397..5a4cf7c 100644
|
|
|
final class WP_Customize_Widgets { |
| 315 | 315 | } |
| 316 | 316 | } |
| 317 | 317 | |
| | 318 | public function get_sidebars_widgets() { |
| | 319 | global $sidebars_widgets; |
| | 320 | |
| | 321 | $sidebars_widgets = get_option( 'sidebars_widgets' ); |
| | 322 | if ( ! $this->manager->is_theme_active() ) { |
| | 323 | $sidebars_widgets = retrieve_widgets( true, false ); |
| | 324 | } |
| | 325 | |
| | 326 | unset( $sidebars_widgets['array_version'] ); |
| | 327 | |
| | 328 | return $sidebars_widgets; |
| | 329 | } |
| | 330 | |
| 318 | 331 | /** |
| 319 | 332 | * Register customizer settings and controls for all sidebars and widgets. |
| 320 | 333 | * |
| … |
… |
final class WP_Customize_Widgets { |
| 327 | 340 | $sidebars_widgets = array_merge( |
| 328 | 341 | array( 'wp_inactive_widgets' => array() ), |
| 329 | 342 | array_fill_keys( array_keys( $GLOBALS['wp_registered_sidebars'] ), array() ), |
| 330 | | wp_get_sidebars_widgets() |
| | 343 | $this->get_sidebars_widgets() |
| 331 | 344 | ); |
| 332 | 345 | |
| 333 | 346 | $new_setting_ids = array(); |
| … |
… |
final class WP_Customize_Widgets { |
| 891 | 904 | * @param array $sidebars_widgets List of widgets for the current sidebar. |
| 892 | 905 | */ |
| 893 | 906 | public function preview_sidebars_widgets( $sidebars_widgets ) { |
| 894 | | $sidebars_widgets = get_option( 'sidebars_widgets' ); |
| | 907 | $sidebars_widgets = $this->get_sidebars_widgets(); |
| 895 | 908 | |
| 896 | | unset( $sidebars_widgets['array_version'] ); |
| 897 | 909 | return $sidebars_widgets; |
| 898 | 910 | } |
| 899 | 911 | |
diff --git src/wp-includes/theme.php src/wp-includes/theme.php
index f66fd95..9bb1a1f 100644
|
|
|
function check_theme_switched() { |
| 1791 | 1791 | if ( $stylesheet = get_option( 'theme_switched' ) ) { |
| 1792 | 1792 | $old_theme = wp_get_theme( $stylesheet ); |
| 1793 | 1793 | |
| | 1794 | if ( get_option( 'theme_switched_via_customizer' ) ) { |
| | 1795 | remove_filter( 'after_switch_theme', '_wp_sidebars_changed' ); |
| | 1796 | update_option( 'theme_switched_via_customizer', false ); |
| | 1797 | } |
| | 1798 | |
| 1794 | 1799 | if ( $old_theme->exists() ) { |
| 1795 | 1800 | /** |
| 1796 | 1801 | * Fires on the first WP load after a theme switch if the old theme still exists. |
| … |
… |
function wp_customize_support_script() { |
| 1918 | 1923 | }()); |
| 1919 | 1924 | </script> |
| 1920 | 1925 | <?php |
| 1921 | | } |
| 1922 | | No newline at end of file |
| | 1926 | } |
diff --git src/wp-includes/widgets.php src/wp-includes/widgets.php
index b911fde..1f60a55 100644
|
|
|
function _wp_sidebars_changed() { |
| 1402 | 1402 | } |
| 1403 | 1403 | |
| 1404 | 1404 | // look for "lost" widgets, this has to run at least on each theme change |
| 1405 | | function retrieve_widgets($theme_changed = false) { |
| | 1405 | function retrieve_widgets($theme_changed = false, $update = true ) { |
| 1406 | 1406 | global $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets; |
| 1407 | 1407 | |
| 1408 | 1408 | $registered_sidebar_keys = array_keys( $wp_registered_sidebars ); |
| … |
… |
function retrieve_widgets($theme_changed = false) { |
| 1412 | 1412 | if ( is_array( $old_sidebars_widgets ) ) { |
| 1413 | 1413 | // time() that sidebars were stored is in $old_sidebars_widgets['time'] |
| 1414 | 1414 | $_sidebars_widgets = $old_sidebars_widgets['data']; |
| 1415 | | remove_theme_mod( 'sidebars_widgets' ); |
| | 1415 | |
| | 1416 | if ( $update ) { |
| | 1417 | remove_theme_mod( 'sidebars_widgets' ); |
| | 1418 | } |
| 1416 | 1419 | |
| 1417 | 1420 | foreach ( $_sidebars_widgets as $sidebar => $widgets ) { |
| 1418 | 1421 | if ( 'wp_inactive_widgets' == $sidebar || 'orphaned_widgets' == substr( $sidebar, 0, 16 ) ) |
| … |
… |
function retrieve_widgets($theme_changed = false) { |
| 1495 | 1498 | } |
| 1496 | 1499 | |
| 1497 | 1500 | $sidebars_widgets['wp_inactive_widgets'] = array_merge($lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets']); |
| 1498 | | wp_set_sidebars_widgets($sidebars_widgets); |
| | 1501 | if ( $update ) { |
| | 1502 | wp_set_sidebars_widgets($sidebars_widgets); |
| | 1503 | } |
| 1499 | 1504 | |
| 1500 | 1505 | return $sidebars_widgets; |
| 1501 | 1506 | } |