diff --git a/wp-admin/options.php b/wp-admin/options.php index 1e4b092b6e..ecfb2c2b6a 100644 --- a/wp-admin/options.php +++ b/wp-admin/options.php @@ -58,6 +58,7 @@ case 'update': $new_val = 'closed'; if ($new_val !== $old_val) { $result = $wpdb->query("UPDATE $wpdb->options SET option_value = '$new_val' WHERE option_name = '$option->option_name'"); + wp_cache_set($option->option_name, $new_val, 'options'); $any_changed++; } } diff --git a/wp-includes/functions.php b/wp-includes/functions.php index cc487f535f..f0c0ad5ab2 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -267,8 +267,11 @@ function get_settings($setting) { $value = wp_cache_get($setting, 'options'); if ( false === $value ) { - $value = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name = '$setting'"); - wp_cache_add($setting, $value, 'options'); + $value = $wpdb->get_row("SELECT option_value FROM $wpdb->options WHERE option_name = '$setting'"); + if( is_object( $value ) ) { + $value = $value->option_value; + wp_cache_set($setting, $value, 'options'); + } } // If home is not set use siteurl. @@ -343,7 +346,7 @@ function update_option($option_name, $newvalue) { // If it's not there add it if ( !$wpdb->get_var("SELECT option_name FROM $wpdb->options WHERE option_name = '$option_name'") ) - add_option($option_name); + add_option($option_name, $newvalue); wp_cache_set($option_name, $newvalue, 'options'); @@ -365,14 +368,14 @@ function add_option($name, $value = '', $description = '', $autoload = 'yes') { global $wpdb; // Make sure the option doesn't already exist - if ( false !== get_option($name, 'options') ) + if ( false !== get_option($name) ) return; $original = $value; if ( is_array($value) || is_object($value) ) $value = serialize($value); - wp_cache_add($name, $value, 'options'); + wp_cache_set($name, $value, 'options'); $name = $wpdb->escape($name); $value = $wpdb->escape($value);