public function generate_script() { global $wp_customize; // Early exit if we're not in the customizer if (!isset($wp_customize)) { return; } // Get an array of all the fields $fields = Kirki::$fields; $script = ''; // Parse the fields and create the script. foreach ($fields as $field) { $field['transport'] = Kirki_Field::sanitize_transport($field); $field['js_vars'] = Kirki_Field::sanitize_js_vars($field); if (!is_null($field['js_vars']) && 'postMessage' == $field['transport']) { foreach ($field['js_vars'] as $js_vars) { $units = !empty($js_vars['units']) ? " + '" . $js_vars['units'] . "'" : ''; $prefix = !empty($js_vars['prefix']) ? "'" . $js_vars['prefix'] . "' + " : ''; $script .= 'wp.customize( \'' . Kirki_Field::sanitize_settings($field) . '\', function( value ) {'; $script .= 'value.bind( function( newval ) {'; if ('html' == $js_vars['function']) { $script .= '$(\'' . $js_vars['element'] . '\').html( newval );'; } else { $script .= '$(\'' . $js_vars['element'] . '\').' . $js_vars['function'] . '(\'' . $js_vars['property'] . '\', ' . $prefix . 'newval' . $units . ' );'; } $script .= '}); });'; } } } return $script; }
public function generate_script() { global $wp_customize; // Early exit if we're not in the customizer if (!isset($wp_customize)) { return; } // Get an array of all the fields $fields = Kirki::$fields; $script = 'jQuery( "#kirki-styles-inline-css" ).remove();'; $styles = array(); // Parse the fields and create the script. foreach ($fields as $field) { $field['transport'] = Kirki_Field::sanitize_transport($field); $field['js_vars'] = Kirki_Field::sanitize_js_vars($field); if (!empty($field['setting'])) { $inline_id = 'kirki-' . $field['setting']; $styles[] = '<style id="' . esc_attr($inline_id) . '">' . Kirki_Output::generate_css_by_fields(array($field)) . '</style>'; } if ('postMessage' == $field['transport']) { $script .= 'wp.customize( \'' . Kirki_Field::sanitize_settings($field) . '\', function( value ) {'; $script .= 'value.bind( function( newval ) {'; if (!is_null($field['js_vars'])) { foreach ($field['js_vars'] as $js_vars) { if ('html' == $js_vars['function']) { $script .= '$(\'' . esc_js($js_vars['element']) . '\').html( newval );'; } elseif ('css' == $js_vars['function']) { $script .= '$(\'' . esc_js($js_vars['element']) . '\').css(\'' . esc_js($js_vars['property']) . '\', newval' . (!empty($js_vars['units']) ? ' + \'' . $js_vars['units'] . "'" : '') . ' );'; } } } else { $output_unit = ''; if (!empty($field['output']) && !empty($field['output']['units'])) { $output_unit = $field['output']['units']; } $inline_id = 'kirki-' . $field['setting']; $placeholder_inline_css = Kirki_Output::generate_css_by_fields(array($field), true); $script .= 'jQuery( "#' . $inline_id . '" )[0].innerHTML = "' . str_replace(array('{value}', '>'), array('" + newval + "' . $output_unit, '>'), esc_js($placeholder_inline_css)) . '";'; } $script .= '}); });'; } } return array($script, $styles); }
public function test_sanitize_transport() { $this->assertEquals('refresh', Kirki_Field::sanitize_transport(array())); $this->assertEquals('refresh', Kirki_Field::sanitize_transport(array('transport' => ''))); $this->assertEquals('refresh', Kirki_Field::sanitize_transport(array('transport' => 'invalid'))); $this->assertEquals('postMessage', Kirki_Field::sanitize_transport(array('transport' => 'postMessage'))); }
/** * Create the settings and controls from the $fields array and register them. * @var object The WordPress Customizer object */ public function add_fields($wp_customize) { $control_types = apply_filters('kirki/control_types', array('color' => 'WP_Customize_Color_Control', 'color-alpha' => 'Kirki_Controls_Color_Alpha_Control', 'image' => 'WP_Customize_Image_Control', 'upload' => 'WP_Customize_Upload_Control', 'switch' => 'Kirki_Controls_Switch_Control', 'toggle' => 'Kirki_Controls_Toggle_Control', 'radio-buttonset' => 'Kirki_Controls_Radio_ButtonSet_Control', 'radio-image' => 'Kirki_Controls_Radio_Image_Control', 'sortable' => 'Kirki_Controls_Sortable_Control', 'slider' => 'Kirki_Controls_Slider_Control', 'number' => 'Kirki_Controls_Number_Control', 'multicheck' => 'Kirki_Controls_MultiCheck_Control', 'palette' => 'Kirki_Controls_Palette_Control', 'custom' => 'Kirki_Controls_Custom_Control', 'editor' => 'Kirki_Controls_Editor_Control', 'select2' => 'Kirki_Controls_Select2_Control', 'select2-multiple' => 'Kirki_Controls_Select2_Multiple_Control')); foreach (self::$fields as $field) { if ('background' == $field['type']) { continue; } $wp_customize->add_setting(Kirki_Field::sanitize_settings($field), array('default' => Kirki_Field::sanitize_default($field), 'type' => Kirki_Field::sanitize_type($field), 'capability' => Kirki_Field::sanitize_capability($field), 'transport' => Kirki_Field::sanitize_transport($field), 'sanitize_callback' => Kirki_Field::sanitize_callback($field))); if (array_key_exists($field['type'], $control_types)) { $class_name = $control_types[$field['type']]; $wp_customize->add_control(new $class_name($wp_customize, Kirki_Field::sanitize_id($field), Kirki_Field::sanitize_field($field))); } else { $wp_customize->add_control(new WP_Customize_Control($wp_customize, Kirki_Field::sanitize_id($field), Kirki_Field::sanitize_field($field))); } } }
/** * Create the settings and controls from the $fields array and register them. * @var object The WordPress Customizer object */ public function add_fields($wp_customize) { $control_types = self::$control_types; $setting_types = self::$setting_types; foreach (self::$fields as $field) { if ('background' == $field['type']) { continue; } if (isset($field['settings']) && is_array($field['settings'])) { $settings = Kirki_Field::sanitize_settings($field); $defaults = Kirki_Field::sanitize_default($field); foreach ($settings as $setting_key => $setting_value) { $args = array('default' => isset($defaults[$setting_key]) ? $defaults[$setting_key] : '', 'type' => Kirki_Field::sanitize_type($field), 'capability' => Kirki_Field::sanitize_capability($field), 'transport' => Kirki_Field::sanitize_transport($field)); if (isset($field['sanitize_callback']) && is_array($field['sanitize_callback'])) { if (isset($field['sanitize_callback'][$setting_key])) { $args['sanitize_callback'] = Kirki_Field::sanitize_callback(array('sanitize_callback' => $field['sanitize_callback'][$setting_key])); } else { $args['sanitize_callback'] = Kirki_Field::sanitize_callback($field); } } $wp_customize->add_setting($setting_value, $args); } } $setting_args = array('default' => Kirki_Field::sanitize_default($field), 'type' => Kirki_Field::sanitize_type($field), 'capability' => Kirki_Field::sanitize_capability($field), 'transport' => Kirki_Field::sanitize_transport($field), 'sanitize_callback' => Kirki_Field::sanitize_callback($field)); if (isset($field['type']) && array_key_exists($field['type'], $setting_types)) { // We must instantiate a custom class for the setting $setting_classname = $setting_types[$field['type']]; $setting = new $setting_classname($wp_customize, Kirki_Field::sanitize_settings($field), $setting_args); $wp_customize->add_setting($setting); } else { $wp_customize->add_setting(Kirki_Field::sanitize_settings($field), $setting_args); } $class_name = 'WP_Customize_Control'; if (array_key_exists($field['type'], $control_types)) { $class_name = $control_types[$field['type']]; } $wp_customize->add_control(new $class_name($wp_customize, Kirki_Field::sanitize_id($field), Kirki_Field::sanitize_field($field))); } }
/** * Create the settings and controls from the $fields array and register them. * @var object The WordPress Customizer object */ public function add_fields($wp_customize) { $control_types = apply_filters('kirki/control_types', array('code' => 'Kirki_Controls_Code_Control', 'color' => 'WP_Customize_Color_Control', 'color-alpha' => 'Kirki_Controls_Color_Alpha_Control', 'image' => 'WP_Customize_Image_Control', 'upload' => 'WP_Customize_Upload_Control', 'switch' => 'Kirki_Controls_Switch_Control', 'toggle' => 'Kirki_Controls_Toggle_Control', 'radio-buttonset' => 'Kirki_Controls_Radio_ButtonSet_Control', 'radio-image' => 'Kirki_Controls_Radio_Image_Control', 'sortable' => 'Kirki_Controls_Sortable_Control', 'slider' => 'Kirki_Controls_Slider_Control', 'number' => 'Kirki_Controls_Number_Control', 'multicheck' => 'Kirki_Controls_MultiCheck_Control', 'palette' => 'Kirki_Controls_Palette_Control', 'custom' => 'Kirki_Controls_Custom_Control', 'editor' => 'Kirki_Controls_Editor_Control', 'select2' => 'Kirki_Controls_Select2_Control', 'select2-multiple' => 'Kirki_Controls_Select2_Multiple_Control', 'dimension' => 'Kirki_Controls_Dimension_Control', 'repeater' => 'Kirki_Controls_Repeater_Control')); $setting_types = apply_filters('kirki/setting_types', array('repeater' => 'Kirki_Settings_Repeater_Setting')); foreach (self::$fields as $field) { if ('background' == $field['type']) { continue; } if (isset($field['settings']) && is_array($field['settings'])) { $settings = Kirki_Field::sanitize_settings($field); $defaults = Kirki_Field::sanitize_default($field); foreach ($settings as $setting_key => $setting_value) { $args = array('default' => isset($defaults[$setting_key]) ? $defaults[$setting_key] : '', 'type' => Kirki_Field::sanitize_type($field), 'capability' => Kirki_Field::sanitize_capability($field), 'transport' => Kirki_Field::sanitize_transport($field)); if (isset($field['sanitize_callback']) && is_array($field['sanitize_callback'])) { if (isset($field['sanitize_callback'][$setting_key])) { $args['sanitize_callback'] = Kirki_Field::sanitize_callback(array('sanitize_callback' => $field['sanitize_callback'][$setting_key])); } else { $args['sanitize_callback'] = Kirki_Field::sanitize_callback($field); } } $wp_customize->add_setting($setting_value, $args); } } $setting_args = array('default' => Kirki_Field::sanitize_default($field), 'type' => Kirki_Field::sanitize_type($field), 'capability' => Kirki_Field::sanitize_capability($field), 'transport' => Kirki_Field::sanitize_transport($field), 'sanitize_callback' => Kirki_Field::sanitize_callback($field)); if (isset($field['type']) && array_key_exists($field['type'], $setting_types)) { // We must instantiate a custom class for the setting $setting_classname = $setting_types[$field['type']]; $setting = new $setting_classname($wp_customize, Kirki_Field::sanitize_settings($field), $setting_args); $wp_customize->add_setting($setting); } else { $wp_customize->add_setting(Kirki_Field::sanitize_settings($field), $setting_args); } $class_name = 'WP_Customize_Control'; if (array_key_exists($field['type'], $control_types)) { $class_name = $control_types[$field['type']]; } $wp_customize->add_control(new $class_name($wp_customize, Kirki_Field::sanitize_id($field), Kirki_Field::sanitize_field($field))); } }