WP_Customize_Setting::__construct( WP_Customize_Manager $manager, string $id, array $args = array() )
Constructor.
Description
Any supplied $args override class property defaults.
Parameters
- $manager
-
(WP_Customize_Manager) (Required) Customizer bootstrap instance.
- $id
-
(string) (Required) A specific ID of the setting. Can be a theme mod or option name.
- $args
-
(array) (Optional) Array of properties for the new Setting object.
- 'type'
(string) Type of the setting. Default 'theme_mod'. - 'capability'
(string) Capability required for the setting. Default 'edit_theme_options' - 'theme_supports'
(string|string[]) Theme features required to support the panel. Default is none. - 'default'
(string) Default value for the setting. Default is empty string. - 'transport'
(string) Options 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'
(callable) Server-side validation callback for the setting's value. - 'sanitize_callback'
(callable) Callback to filter a Customize setting value in un-slashed form. - 'sanitize_js_callback'
(callable) Callback to convert a Customize PHP setting value to a value that is JSON serializable. - 'dirty'
(bool) Whether or not the setting is initially dirty when created.
Default value: array()
- 'type'
Source
File: wp-includes/class-wp-customize-setting.php
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']; } } }
Expand full source code Collapse full source code View on Trac View on GitHub
Changelog
Version | Description |
---|---|
3.4.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
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.