/** * The class constructor. * * @var string the setting ID. * @var string theme_mod / option * @var array an array of arrays of the output arguments. * @var mixed a callable function. */ public static function css($field) { /** * Make sure the field is sanitized before proceeding any further. */ $field_sanitized = Kirki_Field_Sanitize::sanitize_field($field); /** * Set class vars */ self::$settings = $field_sanitized['settings']; self::$callback = $field_sanitized['sanitize_callback']; self::$field_type = $field_sanitized['type']; self::$output = $field_sanitized['output']; if (!is_array(self::$output)) { self::$output = array(array('element' => self::$output, 'sanitize_callback' => null)); } /** * Get the value of this field */ self::$value = Kirki_Values::get_sanitized_field_value($field_sanitized); /** * Returns the styles */ return self::styles(); }
/** * loop through all fields and create an array of style definitions */ public static function loop_controls() { // Get an instance of the Kirki_Styles_Output_CSS class. // This will make sure google fonts and backup fonts are loaded. Kirki_Styles_Output_CSS::get_instance(); $fields = Kirki::$fields; $css = array(); // Early exit if no fields are found. if (empty($fields)) { return; } foreach ($fields as $field) { // Only continue if $field['output'] is set if (isset($field['output']) && !empty($field['output']) && 'background' != $field['type']) { if (function_exists('array_replace_recursive')) { $css = array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field)); } else { $css = Kirki_Helper::array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field)); } } } if (is_array($css)) { return Kirki_Styles_Output_CSS::styles_parse(Kirki_Styles_Output_CSS::add_prefixes($css)); } return; }
/** * loop through all fields and create an array of style definitions */ public static function loop_controls() { $fields = Kirki::$fields; $css = array(); // Early exit if no fields are found. if (empty($fields)) { return; } foreach ($fields as $field) { // Only continue if $field['output'] is set if (isset($field['output']) && !empty($field['output']) && 'background' != $field['type']) { if (function_exists('array_replace_recursive')) { $css = array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field)); } else { $css = Kirki_Helper::array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field)); } } } if (is_array($css)) { return Kirki_Styles_Output_CSS::styles_parse(Kirki_Styles_Output_CSS::add_prefixes($css)); } return; }
/** * Get the CSS for a field. * * @static * @access public * @param array $field The field. * @return array */ public static function css($field) { // Set class vars. self::$settings = $field['settings']; self::$callback = $field['sanitize_callback']; self::$field_type = $field['type']; self::$output = $field['output']; if (!is_array(self::$output)) { self::$output = array(array('element' => self::$output, 'sanitize_callback' => null)); } // Get the value of this field. self::$value = Kirki_Values::get_sanitized_field_value($field); // Find the class that will handle the outpout for this field. $classname = 'Kirki_Output'; $field_output_classes = apply_filters('kirki/' . $field['kirki_config'] . '/output/control-classnames', array('kirki-spacing' => 'Kirki_Output_Field_Spacing', 'kirki-typography' => 'Kirki_Output_Field_Typography', 'kirki-multicolor' => 'Kirki_Output_Field_Multicolor')); if (array_key_exists(self::$field_type, $field_output_classes)) { $classname = $field_output_classes[self::$field_type]; } $obj = new $classname($field['kirki_config'], self::$output, self::$value); return $obj->get_styles(); }
/** * Loop through all fields and create an array of style definitions. * * @static * @access public * @param string $config_id The configuration ID. */ public static function loop_controls($config_id) { // Get an instance of the Kirki_Styles_Output_CSS class. // This will make sure google fonts and backup fonts are loaded. Kirki_Styles_Output_CSS::get_instance(); $fields = Kirki::$fields; $css = array(); // Early exit if no fields are found. if (empty($fields)) { return; } foreach ($fields as $field) { // Only process fields that belong to $config_id. if ($config_id != $field['kirki_config']) { continue; } // Only continue if field dependencies are met. if (!empty($field['required'])) { $valid = true; foreach ($field['required'] as $requirement) { if (isset($requirement['setting']) && isset($requirement['value']) && isset($requirement['operator'])) { $controller_value = Kirki_Values::get_value($config_id, $requirement['setting']); if (!Kirki_Active_Callback::compare($controller_value, $requirement['value'], $requirement['operator'])) { $valid = false; } } } if (!$valid) { continue; } } // Only continue if $field['output'] is set. if (isset($field['output']) && !empty($field['output']) && 'background' != $field['type']) { $css = Kirki_Helper::array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field)); // Add the globals. if (isset(self::$css_array[$config_id]) && !empty(self::$css_array[$config_id])) { Kirki_Helper::array_replace_recursive($css, self::$css_array[$config_id]); } } } $css = apply_filters('kirki/' . $config_id . '/styles', $css); if (is_array($css)) { return Kirki_Styles_Output_CSS::styles_parse(Kirki_Styles_Output_CSS::add_prefixes($css)); } return; }