preset

The preset argument allows you to change the values of one or more controls, based on the value of another control.

In the following example, changing the value of color_scheme_radio will automatically update the values of color_setting_one and color_setting_two. The color controls retain the functionality to be interacted with independently.

Example:

Kirki::add_field( 'theme_config_id', [
	'type'        => 'radio',
	'settings'    => 'color_scheme_radio',
	'label'       => esc_attr__( 'Radio Control', 'kirki' ),
	'description' => esc_attr__( 'This radio will control the following two color controls.', 'kirki' ),
	'section'     => 'preset_section',
	'default'     => 'orange',
	'choices'     => [
		'red'    => esc_html__( 'Red', 'kirki' ),
		'blue'   => esc_html__( 'Blue', 'kirki' ),
		'orange' => esc_html__( 'Orange', 'kirki' ),
	],
	'preset'      => array(
		'red'    => array(
			'settings' => array(
				'color_setting_one' => '#db0000',
				'color_setting_two' => '#871616',
			),
		),
		'blue'   => [
			'settings' => [
				'color_setting_one' => '#428ed1',
				'color_setting_two' => '#1e73be',
			],
		],
		'orange' => [
			'settings' => [
				'color_setting_one' => '#d6a356',
				'color_setting_two' => '#dd9933',
			],
		],
	),
] );

Kirki::add_field( 'theme_config_id', [
	'type'        => 'color',
	'settings'    => 'color_setting_one',
	'label'       => __( 'Color Control One', 'kirki' ),
	'description' => esc_html__( 'This is a color control.', 'kirki' ),
	'section'     => 'preset_section',
	'default'     => '#d6a356',
] );

Kirki::add_field( 'theme_config_id', [
	'type'        => 'color',
	'settings'    => 'color_setting_two',
	'label'       => __( 'Color Control Two', 'kirki' ),
	'description' => esc_html__( 'This is a color control.', 'kirki' ),
	'section'     => 'preset_section',
	'default'     => '#dd9933',
] );

Was this helpful?