WordPress.org

Make WordPress Core

Ticket #18588: 18588.diff

File 18588.diff, 1.3 KB (added by wonderboymusic, 6 years ago)
  • src/wp-includes/theme.php

     
    688688                set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $_sidebars_widgets ) );
    689689        }
    690690
     691        $nav_menu_locations = get_theme_mod( 'nav_menu_locations' );
     692
    691693        $old_theme  = wp_get_theme();
    692694        $new_theme = wp_get_theme( $stylesheet );
    693695
     
    716718        // Migrate from the old mods_{name} option to theme_mods_{slug}.
    717719        if ( is_admin() && false === get_option( 'theme_mods_' . $stylesheet ) ) {
    718720                $default_theme_mods = (array) get_option( 'mods_' . $new_name );
     721                if ( ! empty( $nav_menu_locations ) && empty( $default_theme_mods['nav_menu_locations'] ) ) {
     722                        $default_theme_mods['nav_menu_locations'] = $nav_menu_locations;
     723                }
    719724                add_option( "theme_mods_$stylesheet", $default_theme_mods );
    720725        } else {
    721726                /*
     
    726731                if ( 'wp_ajax_customize_save' === current_action() ) {
    727732                        remove_theme_mod( 'sidebars_widgets' );
    728733                }
     734
     735                if ( ! empty( $nav_menu_locations ) ) {
     736                        $nav_mods = get_theme_mod( 'nav_menu_locations' );
     737                        if ( empty( $nav_mods ) ) {
     738                                set_theme_mod( 'nav_menu_locations', $nav_menu_locations );
     739                        }
     740                }
    729741        }
    730742
    731743        update_option( 'theme_switched', $old_theme->get_stylesheet() );