Constructor.
Description
Any supplied $args override class property defaults.
Parameters
$manager
WP_Customize_Managerrequired- Customizer bootstrap instance.
$id
stringrequired- A specific ID of the setting.
Can be a theme mod or option name. $args
arrayoptional- Array of properties for the new Setting object.
type
stringType of the setting. Default'theme_mod'
.capability
stringCapability required for the setting. Default'edit_theme_options'
theme_supports
string|string[]Theme features required to support the panel. Default is none.default
stringDefault value for the setting. Default is empty string.transport
stringOptions for rendering the live preview of changes in Customizer.
Using'refresh'
makes the change visible by reloading the whole preview.
Using'postMessage'
allows a custom JavaScript to handle live changes.
Default is'refresh'
.validate_callback
callableServer-side validation callback for the setting’s value.sanitize_callback
callableCallback to filter a Customize setting value in un-slashed form.sanitize_js_callback
callableCallback to convert a Customize PHP setting value to a value that is JSON serializable.dirty
boolWhether or not the setting is initially dirty when created.
Default:
array()
Source
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'];
}
}
}
Changelog
Version | Description |
---|---|
3.4.0 | Introduced. |
Documentation for Setting Validation and Notifications
WordPress Appearance -> Customize section follows this structure: Panels -> Sections -> Settings (which can have controls)
We can add our custom Panels or We can add our sections in existing panels too. Below is the code to add a section in WooCommerce Panel, created default by WooCommerce.
Note:
WPDOCS_SECTION_ID
must be uniqueWPDOCS_SECTION_NAME
as per your requirementUnder each section you can add multiple settings. Code to add setting is:
Note:
WPDOCS_SETTING_ID
must be unique$wp_customize->add_setting
basically creates a setting section. You will need the input controls under each setting section. Controls can be added under settings.code:
Note:
WPDOCS_SECTION_ID
andWPDOCS_SETTING_ID
are the ones we added above.