WP_Customize_Setting::save PHP Method

save() final public method

Checks user capabilities and theme supports, and then saves the value of the setting.
Since: 3.4.0
final public save ( ) : false | void
return false | void False if cap check fails or value isn't set or is invalid.
    public final function save()
    {
        $value = $this->post_value();
        if (!$this->check_capabilities() || !isset($value)) {
            return false;
        }
        /**
         * Fires when the WP_Customize_Setting::save() method is called.
         *
         * The dynamic portion of the hook name, `$this->id_data['base']` refers to
         * the base slug of the setting name.
         *
         * @since 3.4.0
         *
         * @param WP_Customize_Setting $this WP_Customize_Setting instance.
         */
        do_action('customize_save_' . $this->id_data['base'], $this);
        $this->update($value);
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * @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');
 }