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'];
}
}
}
/** * 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]; }