diff --git a/src/wp-includes/class-wp-customize-manager.php b/src/wp-includes/class-wp-customize-manager.php index 3026d3b039136..c842fedf45547 100644 --- a/src/wp-includes/class-wp-customize-manager.php +++ b/src/wp-includes/class-wp-customize-manager.php @@ -1772,7 +1772,17 @@ public function unsanitized_post_values( $args = array() ) { $stashed_theme_mods = get_option( 'customize_stashed_theme_mods' ); $stylesheet = $this->get_stylesheet(); if ( isset( $stashed_theme_mods[ $stylesheet ] ) ) { - $values = array_merge( $values, wp_list_pluck( $stashed_theme_mods[ $stylesheet ], 'value' ) ); + $stashed_values = wp_list_pluck( $stashed_theme_mods[ $stylesheet ], 'value' ); + + $valid_stashed_values = array_filter( + $stashed_values, + function ( $setting_id ) { + return $this->get_setting( $setting_id ); + }, + ARRAY_FILTER_USE_KEY + ); + + $values = array_merge( $values, $valid_stashed_values ); } } diff --git a/tests/phpunit/tests/customize/manager.php b/tests/phpunit/tests/customize/manager.php index 21bdd85eebac3..642bea214b66f 100644 --- a/tests/phpunit/tests/customize/manager.php +++ b/tests/phpunit/tests/customize/manager.php @@ -2453,6 +2453,15 @@ public function test_unsanitized_post_values_with_changeset_and_stashed_theme_mo 'exclude_changeset' => true, ) ); + $this->assertEmpty( $values ); + + $manager->add_setting( 'background_color' ); + $values = $manager->unsanitized_post_values( + array( + 'exclude_post_data' => true, + 'exclude_changeset' => true, + ) + ); $this->assertNotEmpty( $values ); $this->assertArrayHasKey( 'background_color', $values ); $this->assertSame( '#000000', $values['background_color'] );