/** * @ticket 33499 */ function test_option_autoloading() { global $wpdb; wp_set_current_user(self::factory()->user->create(array('role' => 'administrator'))); $name = 'autoloaded1'; $setting = new WP_Customize_Setting($this->manager, $name, array('type' => 'option')); $value = 'value1'; $this->manager->set_post_value($setting->id, $value); $setting->save(); $autoload = $wpdb->get_var($wpdb->prepare("SELECT autoload FROM {$wpdb->options} WHERE option_name = %s", $setting->id)); $this->assertEquals('yes', $autoload); $this->assertEquals($value, get_option($name)); $name = 'autoloaded2'; $setting = new WP_Customize_Setting($this->manager, $name, array('type' => 'option', 'autoload' => true)); $value = 'value2'; $this->manager->set_post_value($setting->id, $value); $setting->save(); $autoload = $wpdb->get_var($wpdb->prepare("SELECT autoload FROM {$wpdb->options} WHERE option_name = %s", $setting->id)); $this->assertEquals('yes', $autoload); $this->assertEquals($value, get_option($name)); $name = 'not-autoloaded1'; $setting = new WP_Customize_Setting($this->manager, $name, array('type' => 'option', 'autoload' => false)); $value = 'value3'; $this->manager->set_post_value($setting->id, $value); $setting->save(); $autoload = $wpdb->get_var($wpdb->prepare("SELECT autoload FROM {$wpdb->options} WHERE option_name = %s", $setting->id)); $this->assertEquals('no', $autoload); $this->assertEquals($value, get_option($name)); $id_base = 'multi-not-autoloaded'; $setting1 = new WP_Customize_Setting($this->manager, $id_base . '[foo]', array('type' => 'option')); $setting2 = new WP_Customize_Setting($this->manager, $id_base . '[bar]', array('type' => 'option', 'autoload' => false)); $this->manager->set_post_value($setting1->id, 'value1'); $this->manager->set_post_value($setting2->id, 'value2'); $setting1->save(); $autoload = $wpdb->get_var($wpdb->prepare("SELECT autoload FROM {$wpdb->options} WHERE option_name = %s", $id_base)); $this->assertEquals('no', $autoload, 'Even though setting1 did not indicate autoload (thus normally true), since another multidimensional option setting of the base did say autoload=false, it should be autoload=no'); }