* @since 0.1 * @param array $args The field arguments. * @param WP_Customize_Manager $wp_customize The customizer instance. * @return array */ public function filter_setting_args( $args, $wp_customize ) { return $args; } /** * Filter control args. * * @access public * @since 0.1 * @param array $args The field arguments. * @param WP_Customize_Manager $wp_customize The customizer instance. * @return array */ public function filter_control_args( $args, $wp_customize ) { return $args; } /** * Registers the setting. * * @access public * @since 0.1 * @param WP_Customize_Manager $customizer The customizer instance. * @return void */ public function add_setting( $customizer ) { $args = $this->args; // This is for postMessage purpose. // @see wp-content/plugins/kirki/kirki-packages/module-postmessage/src/Postmessage.php inside 'field_add_setting_args' method. $args['type'] = isset( $this->type ) ? $this->type : ''; /** * Allow filtering the arguments. * * @since 0.1 * @param array $this->args The arguments. * @param WP_Customize_Manager $customizer The customizer instance. * @return array Return the arguments. */ $args = apply_filters( 'kirki_field_add_setting_args', $args, $customizer ); if ( ! isset( $args['settings'] ) || empty( $args['settings'] ) ) { return; } $setting_id = $args['settings']; $args = [ 'type' => isset( $args['option_type'] ) ? $args['option_type'] : 'theme_mod', // 'type' here doesn't use the $args['type'] but instead checking the $args['option_type']. 'capability' => isset( $args['capability'] ) ? $args['capability'] : 'edit_theme_options', 'theme_supports' => isset( $args['theme_supports'] ) ? $args['theme_supports'] : '', 'default' => isset( $args['default'] ) ? $args['default'] : '', 'transport' => isset( $args['transport'] ) ? $args['transport'] : 'refresh', 'sanitize_callback' => isset( $args['sanitize_callback'] ) ? $args['sanitize_callback'] : '', 'sanitize_js_callback' => isset( $args['sanitize_js_callback'] ) ? $args['sanitize_js_callback'] : '', ]; $settings_class = $this->settings_class ? $this->settings_class : null; if ( $settings_class ) { $customizer->add_setting( new $settings_class( $customizer, $setting_id, $args ) ); } else { $customizer->add_setting( $setting_id, $args ); } } /** * Registers the control. * * @access public * @since 0.1 * @param WP_Customize_Manager $wp_customize The customizer instance. * @return void */ public function add_control( $wp_customize ) { $control_class = $this->control_class; // If no class-name is defined, early exit. if ( ! $control_class ) { return; } /** * Allow filtering the arguments. * * @since 0.1 * @param array $this->args The arguments. * @param WP_Customize_Manager $wp_customize The customizer instance. * @return array Return the arguments. */ $args = apply_filters( 'kirki_field_add_control_args', $this->args, $wp_customize ); $wp_customize->add_control( new $control_class( $wp_customize, $this->args['settings'], $args ) ); } }