From 57fd97017eef393c3fb117c0aefb8475de950f07 Mon Sep 17 00:00:00 2001 From: Felix Arntz Date: Tue, 13 Mar 2018 15:37:33 +0000 Subject: [PATCH] Multisite: Ensure the `{$network_id}:notoptions` array is set in cache in `get_network_option()`. Prior to this change, the `{$network_id}:notoptions` cache would only be fetched, but not set, unless the actual database lookup would be unsuccessful. This enhancement slightly improves performance by preventing unnecessary external object cache lookups if one is used. Fixes #43506. Built from https://develop.svn.wordpress.org/trunk@42833 git-svn-id: http://core.svn.wordpress.org/trunk@42663 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/option.php | 7 ++++++- wp-includes/version.php | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/wp-includes/option.php b/wp-includes/option.php index f52b7efee7..a80de70784 100644 --- a/wp-includes/option.php +++ b/wp-includes/option.php @@ -1247,7 +1247,7 @@ function get_network_option( $network_id, $option, $default = false ) { $notoptions_key = "$network_id:notoptions"; $notoptions = wp_cache_get( $notoptions_key, 'site-options' ); - if ( isset( $notoptions[ $option ] ) ) { + if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) { /** * Filters a specific default network option. @@ -1295,6 +1295,11 @@ function get_network_option( $network_id, $option, $default = false ) { } } + if ( ! is_array( $notoptions ) ) { + $notoptions = array(); + wp_cache_set( $notoptions_key, $notoptions, 'site-options' ); + } + /** * Filters the value of an existing network option. * diff --git a/wp-includes/version.php b/wp-includes/version.php index a1b37d6c78..5a60cb8a65 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '5.0-alpha-42832'; +$wp_version = '5.0-alpha-42833'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.