WP_Customize_Manager::add_dynamic_settings()
Registers any dynamically-created settings, such as those from $_POST['customized'] that have no corresponding setting created.
This is a mechanism to "wake up" settings that have been dynamically created on the front end and have been sent to WordPress in $_POST['customized']. When WP loads, the dynamically-created settings then will get created and previewed even though they are not directly created statically with code.
Method of the class: WP_Customize_Manager{}
Hooks from the method
Return
Array
. The WP_Customize_Setting objects added.
Usage
$WP_Customize_Manager = new WP_Customize_Manager(); $WP_Customize_Manager->add_dynamic_settings( $setting_ids );
- $setting_ids(array) (required)
- The setting IDs to add.
Changelog
Since 4.2.0 | Introduced. |
WP_Customize_Manager::add_dynamic_settings() WP Customize Manager::add dynamic settings code WP 6.7.1
public function add_dynamic_settings( $setting_ids ) { $new_settings = array(); foreach ( $setting_ids as $setting_id ) { // Skip settings already created. if ( $this->get_setting( $setting_id ) ) { continue; } $setting_args = false; $setting_class = 'WP_Customize_Setting'; /** * Filters a dynamic setting's constructor args. * * For a dynamic setting to be registered, this filter must be employed * to override the default false value with an array of args to pass to * the WP_Customize_Setting constructor. * * @since 4.2.0 * * @param false|array $setting_args The arguments to the WP_Customize_Setting constructor. * @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`. */ $setting_args = apply_filters( 'customize_dynamic_setting_args', $setting_args, $setting_id ); if ( false === $setting_args ) { continue; } /** * Allow non-statically created settings to be constructed with custom WP_Customize_Setting subclass. * * @since 4.2.0 * * @param string $setting_class WP_Customize_Setting or a subclass. * @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`. * @param array $setting_args WP_Customize_Setting or a subclass. */ $setting_class = apply_filters( 'customize_dynamic_setting_class', $setting_class, $setting_id, $setting_args ); $setting = new $setting_class( $this, $setting_id, $setting_args ); $this->add_setting( $setting ); $new_settings[] = $setting; } return $new_settings; }