diff --git a/wp-admin/options.php b/wp-admin/options.php index a8c7497ed8..3e2e104214 100644 --- a/wp-admin/options.php +++ b/wp-admin/options.php @@ -279,6 +279,23 @@ if ( 'update' === $action ) { // We are saving settings sent from a settings pag $_POST['gmt_offset'] = $_POST['timezone_string']; $_POST['gmt_offset'] = preg_replace( '/UTC\+?/', '', $_POST['gmt_offset'] ); $_POST['timezone_string'] = ''; + } elseif ( isset( $_POST['timezone_string'] ) && ! in_array( $_POST['timezone_string'], timezone_identifiers_list( DateTimeZone::ALL_WITH_BC ), true ) ) { + // Reset to the current value. + $current_timezone_string = get_option( 'timezone_string' ); + + if ( ! empty( $current_timezone_string ) ) { + $_POST['timezone_string'] = $current_timezone_string; + } else { + $_POST['gmt_offset'] = get_option( 'gmt_offset' ); + $_POST['timezone_string'] = ''; + } + + add_settings_error( + 'general', + 'settings_updated', + __( 'The timezone you have entered is not valid. Please select a valid timezone.' ), + 'error' + ); } // Handle translation installation. diff --git a/wp-includes/version.php b/wp-includes/version.php index 38a1358369..f3d01e2706 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.4-beta4-56948'; +$wp_version = '6.4-beta4-56949'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.