WP_Customize_Setting::__construct PHP Method

__construct() public method

Any supplied $args override class property defaults.
Since: 3.4.0
public __construct ( WP_Customize_Manager $manager, string $id, array $args = [] )
$manager WP_Customize_Manager
$id string An specific ID of the setting. Can be a theme mod or option name.
$args array Setting arguments.
    public function __construct($manager, $id, $args = array())
    {
        $keys = array_keys(get_object_vars($this));
        foreach ($keys as $key) {
            if (isset($args[$key])) {
                $this->{$key} = $args[$key];
            }
        }
        $this->manager = $manager;
        $this->id = $id;
        // Parse the ID for array keys.
        $this->id_data['keys'] = preg_split('/\\[/', str_replace(']', '', $this->id));
        $this->id_data['base'] = array_shift($this->id_data['keys']);
        // Rebuild the ID.
        $this->id = $this->id_data['base'];
        if (!empty($this->id_data['keys'])) {
            $this->id .= '[' . implode('][', $this->id_data['keys']) . ']';
        }
        if ($this->validate_callback) {
            add_filter("customize_validate_{$this->id}", $this->validate_callback, 10, 3);
        }
        if ($this->sanitize_callback) {
            add_filter("customize_sanitize_{$this->id}", $this->sanitize_callback, 10, 2);
        }
        if ($this->sanitize_js_callback) {
            add_filter("customize_sanitize_js_{$this->id}", $this->sanitize_js_callback, 10, 2);
        }
        if ('option' === $this->type || 'theme_mod' === $this->type) {
            // Other setting types can opt-in to aggregate multidimensional explicitly.
            $this->aggregate_multidimensional();
            // Allow option settings to indicate whether they should be autoloaded.
            if ('option' === $this->type && isset($args['autoload'])) {
                self::$aggregated_multidimensionals[$this->type][$this->id_data['base']]['autoload'] = $args['autoload'];
            }
        }
    }

Usage Example

 /**
  * WP_Customize_Custom_CSS_Setting constructor.
  *
  * @since 4.7.0
  * @access public
  *
  * @throws Exception If the setting ID does not match the pattern `custom_css[$stylesheet]`.
  *
  * @param WP_Customize_Manager $manager The Customize Manager class.
  * @param string               $id      An specific ID of the setting. Can be a
  *                                      theme mod or option name.
  * @param array                $args    Setting arguments.
  */
 public function __construct($manager, $id, $args = array())
 {
     parent::__construct($manager, $id, $args);
     if ('custom_css' !== $this->id_data['base']) {
         throw new Exception('Expected custom_css id_base.');
     }
     if (1 !== count($this->id_data['keys']) || empty($this->id_data['keys'][0])) {
         throw new Exception('Expected single stylesheet key.');
     }
     $this->stylesheet = $this->id_data['keys'][0];
 }
All Usage Examples Of WP_Customize_Setting::__construct