diff --git a/wp-includes/option.php b/wp-includes/option.php index e587931173..13f5d49c87 100644 --- a/wp-includes/option.php +++ b/wp-includes/option.php @@ -261,11 +261,19 @@ function get_option( $option, $default_value = false ) { function wp_prime_option_caches( $options ) { $alloptions = wp_load_alloptions(); $cached_options = wp_cache_get_multiple( $options, 'options' ); + $notoptions = wp_cache_get( 'notoptions', 'options' ); + if ( ! is_array( $notoptions ) ) { + $notoptions = array(); + } // Filter options that are not in the cache. $options_to_prime = array(); foreach ( $options as $option ) { - if ( ( ! isset( $cached_options[ $option ] ) || ! $cached_options[ $option ] ) && ! isset( $alloptions[ $option ] ) ) { + if ( + ( ! isset( $cached_options[ $option ] ) || false === $cached_options[ $option ] ) + && ! isset( $alloptions[ $option ] ) + && ! isset( $notoptions[ $option ] ) + ) { $options_to_prime[] = $option; } } @@ -288,7 +296,12 @@ function wp_prime_option_caches( $options ) { $options_found = array(); foreach ( $results as $result ) { - $options_found[ $result->option_name ] = maybe_unserialize( $result->option_value ); + /* + * The cache is primed with the raw value (i.e. not maybe_unserialized). + * + * `get_option()` will handle unserializing the value as needed. + */ + $options_found[ $result->option_name ] = $result->option_value; } wp_cache_set_multiple( $options_found, 'options' ); @@ -299,12 +312,6 @@ function wp_prime_option_caches( $options ) { $options_not_found = array_diff( $options_to_prime, array_keys( $options_found ) ); - $notoptions = wp_cache_get( 'notoptions', 'options' ); - - if ( ! is_array( $notoptions ) ) { - $notoptions = array(); - } - // Add the options that were not found to the cache. $update_notoptions = false; foreach ( $options_not_found as $option_name ) { diff --git a/wp-includes/version.php b/wp-includes/version.php index edb1860748..de5bc9f1e0 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.5-alpha-57028'; +$wp_version = '6.5-alpha-57029'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.