function google_link() { $fields = Kirki::fields()->get_all(); // Early exit if no fields are found. if (!$fields || empty($fields)) { return; } // Get an array of all the google fonts $google_fonts = Kirki::fonts()->get_google_fonts(); $fonts = array(); foreach ($fields as $field) { if (isset($field['output'])) { // Check if this is a font-family control $is_font_family = isset($field['output']['property']) && 'font-family' == $field['output']['property'] ? true : false; // Check if this is a font-weight control $is_font_weight = isset($field['output']['property']) && 'font-weight' == $field['output']['property'] ? true : false; // Check if this is a font subset control $is_font_subset = isset($field['output']['property']) && 'font-subset' == $field['output']['property'] ? true : false; if ($is_font_family || $is_font_weight || $is_font_subset) { // The value of this control $value = kirki_get_option($field['settings_raw']); if ($is_font_family) { $fonts[]['font-family'] = $value; } else { if ($is_font_weight) { $fonts[]['font-weight'] = $value; } else { if ($is_font_subset) { $fonts[]['subsets'] = $value; } } } } } } foreach ($fonts as $font) { if (isset($font['font-family'])) { $font_families = !isset($font_families) ? array() : $font_families; $font_families[] = $font['font-family']; if (Kirki::fonts()->is_google_font($font['font-family'])) { $has_google_font = true; } } if (isset($font['font-weight'])) { $font_weights = !isset($font_weights) ? array() : $font_weights; $font_weights[] = $font['font-weight']; } if (isset($font['subsets'])) { $font_subsets = !isset($font_subsets) ? array() : $font_subsets; $font_subsets[] = $font['subsets']; } } $font_families = !isset($font_families) || empty($font_families) ? false : $font_families; $font_weights = !isset($font_weights) || empty($font_weights) ? '400' : $font_weights; $font_subsets = !isset($font_subsets) || empty($font_subsets) ? 'all' : $font_subsets; if (!isset($has_google_font) || !$has_google_font) { $font_families = false; } return $font_families ? Kirki::fonts()->get_google_font_uri($font_families, $font_weights, $font_subsets) : false; }
/** * Access the single instance of this class * @return Kirki */ public static function get_instance() { if (self::$instance == null) { self::$instance = new Kirki(); } return self::$instance; }
/** * 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 = Kirki_Field::sanitize_field($field); /** * Get the config ID used in the Kirki class. */ $config_id = Kirki::get_config_id($field); /** * Set class vars */ self::$settings = $field['settings']; self::$output = $field['output']; self::$callback = $field['sanitize_callback']; /** * Get the value of this field */ if ('option' == Kirki::$config[$config_id]['option_type'] && '' != Kirki::$config[$config_id]['option_name']) { self::$value = Kirki::get_option($config_id, str_replace(array(']', Kirki::$config[$config_id]['option_name'] . '['), '', $field['settings'])); } else { self::$value = Kirki::get_option($config_id, $field['settings']); } /** * Returns the styles */ if (!is_array(self::$value)) { return self::styles(); } }
public function test_customize_controls_print_scripts() { Kirki::add_field('', array('settings' => 'foo', 'type' => 'text', 'section' => 'bar', 'help' => 'Lorem Ipsum')); $script = '$( "<a href=\'#\' class=\'tooltip hint--left\' data-hint=\'Lorem Ipsum\'><span class=\'dashicons dashicons-info\'></span></a>" ).prependTo( "#customize-control-foo" );'; $this->expectOutputString('<script>jQuery(document).ready(function($) { "use strict"; ' . $script . '});</script>'); Kirki()->scripts->tooltips->customize_controls_print_footer_scripts(); }
/** * Adds custom classes to the array of body classes. * ================================================ * * @param array $classes Classes for the body element. * * @return array */ function tm_polygon_body_classes($classes) { // Adds a class of group-blog to blogs with more than 1 published author. if (is_multi_author()) { $classes[] = 'group-blog'; } global $tm_polygon_custom_class; if ($tm_polygon_custom_class) { $classes[] = $tm_polygon_custom_class; } if (Kirki::get_option('tm-polygon', 'site_general_boxed') == 1) { $classes[] = 'boxed'; } $classes[] = Kirki::get_option('tm-polygon', 'header_type'); global $tm_polygon_page_layout_private; if ($tm_polygon_page_layout_private != 'default' && class_exists('cmb2_bootstrap_205')) { $tm_polygon_layout = get_post_meta(get_the_ID(), "tm_polygon_page_layout_private", true); } else { $tm_polygon_layout = Kirki::get_option('tm-polygon', 'page_layout'); } $classes[] = $tm_polygon_layout; if (defined('TM_CORE_VERSION')) { $classes[] = 'core_' . str_replace(".", "", TM_CORE_VERSION); } return $classes; }
/** * Add custom CSS rules to the head, applying our custom styles */ function custom_css() { $color = $this->get_admin_colors(); $config = Kirki::config(); $color_font = false; $color_accent = $config->get('color_accent', $color['icon_colors']['focus']); $color_back = $config->get('color_back', '#ffffff'); $color_font = 170 > Kirki_Color::get_brightness($color_back) ? '#f2f2f2' : '#222'; $styles = '<style>'; // Background styles $styles .= '#customize-controls .wp-full-overlay-sidebar-content{background-color:' . $color_back . ';}'; $styles .= '#customize-theme-controls .accordion-section-title, #customize-info .accordion-section-title,#customize-info .accordion-section-title:hover,#customize-info.open .accordion-section-title{background-color:' . $color_back . ';color:' . $color_font . ';}'; $styles .= '#customize-theme-controls .control-section .accordion-section-title:hover,#customize-theme-controls .control-section .accordion-section-title:focus,.control-section.control-panel>.accordion-section-title:after{background-color:' . Kirki_Color::adjust_brightness($color_back, -10) . ';color:' . $color_font . ';}'; $styles .= '#customize-theme-controls .control-section.control-panel>h3.accordion-section-title:focus:after, #customize-theme-controls .control-section.control-panel>h3.accordion-section-title:hover:after{background-color:' . Kirki_Color::adjust_brightness($color_back, -20) . ';color:' . $color_font . ';}'; $styles .= '#customize-theme-controls .control-section.open .accordion-section-title{background-color:' . $color_accent . ' !important;color:' . $color_font . ' !important;}'; // Tooltip styles // $styles .= 'li.customize-control a.button.tooltip.hint--left {color:' . $color_accent . ';}'; // Image-Radio styles $styles .= '.customize-control-radio-image .image.ui-buttonset label.ui-state-active {border-color:' . $color_accent . ';}'; // Buttonset-Radio styles $styles .= '.customize-control-radio-buttonset label.ui-state-active{background-color:' . $color_accent . ';color:' . $color_font . ';}'; // Slider Controls $styles .= '.customize-control-slider .ui-slider .ui-slider-handle{background-color:' . $color_accent . ';border-color:' . $color_accent . ';}'; // Switch Controls $styles .= '.customize-control-switch .Switch .On, .customize-control-toggle .Switch .On{color:' . $color_accent . ';}'; // Toggle Controls $styles .= '.customize-control-switch .Switch.Round.On, .customize-control-toggle .Switch.Round.On{background-color:' . Kirki_Color::adjust_brightness($color_accent, -10) . ';}'; // Sortable Controls $styles .= '.customize-control-sortable ul.ui-sortable li .dashicons.visibility{color:' . $color_accent . ';}'; // Palette Controls $styles .= '.customize-control-palette label.ui-state-active.ui-button.ui-widget span.ui-button-text {border-color:' . $color_accent . ';}'; $styles .= '</style>'; echo $styles; }
public function wp_footer() { 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()->get_all(); $script = ''; // Parse the fields and create the script. foreach ($fields as $field) { if (isset($field['transport']) && !is_null($field['js_vars']) && 'postMessage' == $field['transport']) { foreach ($field['js_vars'] as $js_vars) { $script .= 'wp.customize( \'' . $field['settings'] . '\', function( value ) {'; $script .= 'value.bind( function( newval ) {'; 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 );'; } $script .= '}); });'; } } } if ('' != $script) { echo Kirki_Scripts_Registry::prepare($script); } }
function kirki_filtered_url() { $config = apply_filters('kirki/config', array()); if (isset($config['url_path'])) { Kirki::$url = esc_url_raw($config['url_path']); } }
public function test_add_section() { Kirki::add_section('test_empty', array()); Kirki::add_section('test', array('priority' => 4, 'title' => 'Title', 'description' => 'My Description', 'panel' => 'my_panel')); $this->assertEquals(array('id' => 'test_empty', 'description' => '', 'priority' => 10, 'active_callback' => '__return_true', 'panel' => ''), Kirki::$sections['test_empty']); $this->assertEquals(array('id' => 'test', 'title' => 'Title', 'description' => 'My Description', 'priority' => '4', 'active_callback' => '__return_true', 'panel' => 'my_panel'), Kirki::$sections['test']); $this->assertEquals(2, count(Kirki::$sections)); }
public function test_config() { Kirki::add_config('test_empty', array()); Kirki::add_config('test', array('capability' => 'manage_network_options', 'option_type' => 'option', 'option_name' => 'my_option_name', 'compiler' => array(), 'disable_output' => true, 'postMessage' => 'auto')); $this->assertEquals(array('capability' => 'edit_theme_options', 'option_type' => 'theme_mod', 'option_name' => '', 'compiler' => array(), 'disable_output' => false, 'postMessage' => ''), Kirki::$config['global']); $this->assertEquals(array('capability' => 'edit_theme_options', 'option_type' => 'theme_mod', 'option_name' => '', 'compiler' => array(), 'disable_output' => false, 'postMessage' => ''), Kirki::$config['test_empty']); $this->assertEquals(array('capability' => 'manage_network_options', 'option_type' => 'option', 'option_name' => 'my_option_name', 'compiler' => array(), 'disable_output' => true, 'postMessage' => 'auto'), Kirki::$config['test']); $this->assertEquals(3, count(Kirki::$config)); }
/** * Process fields added using the 'kirki/fields' and 'kirki/controls' filter. * These filters are no longer used, this is simply for backwards-compatibility */ public function fields_from_filters() { $fields = apply_filters('kirki/controls', array()); $fields = apply_filters('kirki/fields', $fields); if (!empty($fields)) { foreach ($fields as $field) { Kirki::add_field('global', $field); } } }
/** * Enqueue the scripts required. */ public function customize_controls_enqueue_scripts() { $config = Kirki::config()->get_all(); $kirki_url = '' != $config['url_path'] ? $config['url_path'] : KIRKI_URL; wp_enqueue_script('kirki_customizer_js', trailingslashit($kirki_url) . 'assets/js/customizer.js', array('jquery', 'customize-controls')); wp_enqueue_script('serialize-js', trailingslashit($kirki_url) . 'assets/js/serialize.js'); wp_enqueue_script('jquery-stepper-min-js', trailingslashit($kirki_url) . 'assets/js/jquery.fs.stepper.min.js', array('jquery')); wp_enqueue_script('jquery-ui-core'); wp_enqueue_script('jquery-ui-tooltip'); wp_enqueue_script('jquery-stepper-min-js'); }
/** * Build the customizer fields. * Parses all fields and creates the setting & control for each of them. */ public function build($wp_customize) { include_once KIRKI_PATH . '/includes/class-kirki-control.php'; include_once KIRKI_PATH . '/includes/class-kirki-controls.php'; $fields = Kirki::fields()->get_all(); // Early exit if controls are not set or if they're empty if (empty($fields)) { return; } foreach ($fields as $field) { $this->build_field($wp_customize, $field); } }
public function test_generate_script() { $js_vars = array('element' => 'body', 'function' => 'css', 'property' => 'color'); Kirki::add_field('', array('settings' => 'foo', 'type' => 'text', 'transport' => 'postMessage', 'js_vars' => $js_vars)); set_theme_mod('foo', '#333'); $wp_customize = $this->init_customizer(); $this->assertEquals('wp.customize( \'foo\', function( value ) {value.bind( function( newval ) {$(\'body\').css(\'color\', newval );}); });', Kirki()->scripts->postmessage->generate_script()); $js_vars = array('element' => 'body', 'function' => 'html'); Kirki::add_field('', array('settings' => 'foo', 'type' => 'text', 'transport' => 'postMessage', 'js_vars' => $js_vars)); set_theme_mod('foo', 'this is a string'); $wp_customize = $this->init_customizer(); $this->assertEquals('wp.customize( \'foo\', function( value ) {value.bind( function( newval ) {$(\'body\').html( newval );}); });', Kirki()->scripts->postmessage->generate_script()); }
/** * If we've specified an image to be used as logo, * replace the default theme description with a div that will include our logo. */ public function customize_controls_print_scripts() { $options = Kirki::config()->get_all(); $script = ''; if ('' != $options['logo_image'] || '' != $options['description']) { if ('' != $options['logo_image']) { $script .= '$( \'div#customize-info .preview-notice\' ).replaceWith( \'<img src="' . $options['logo_image'] . '">\' );'; } if ('' != $options['description']) { $script .= '$( \'div#customize-info .accordion-section-content\' ).replaceWith( \'<div class="accordion-section-content"><div class="theme-description">' . $options['description'] . '</div></div>\' );'; } } if ('' != $script) { echo Kirki_Scripts_Registry::prepare($script); } }
function tm_polygon_js_custom_code() { ?> <?php if (Kirki::get_option('tm-polygon', 'custom_js_enable') == 1) { ?> <?php echo html_entity_decode(Kirki::get_option('tm-polygon', 'custom_js')); ?> <?php } ?> <?php if (Kirki::get_option('tm-polygon', 'nav_sticky_enable') == 1 && has_nav_menu('primary')) { ?> <?php if (Kirki::get_option('tm-polygon', 'header_type') == 'header02' || Kirki::get_option('tm-polygon', 'header_type') == 'header04') { ?> <script> jQuery(document).ready(function ($) { $(".sticky-menu").headroom( { offset: $(".site-top").innerHeight(), } ); }); </script> <?php } else { ?> <script> jQuery(document).ready(function ($) { $(".sticky-menu").headroom( { offset: 0 } ); }); </script> <?php } ?> <?php } }
function infinity_js_custom_code() { ?> <?php if (Kirki::get_option('infinity', 'custom_js_enable') == 1) { ?> <?php echo html_entity_decode(Kirki::get_option('infinity', 'custom_js')); ?> <?php } ?> <?php if (Kirki::get_option('infinity', 'nav_sticky_enable') == 1 && has_nav_menu('primary')) { ?> <?php if (Kirki::get_option('infinity', 'header_type') == 'header03' || Kirki::get_option('infinity', 'header_type') == 'header04') { ?> <script> jQuery(document).ready(function ($) { $(".header").headroom( { offset: 52 } ); }); </script> <?php } else { ?> <script> jQuery(document).ready(function ($) { $("#site-navigation").headroom( { offset: 160 } ); }); </script> <?php } ?> <?php } }
/** * Add fields using the Kirki API */ public function add_fields_via_api() { $args = $this->field; $args['section'] = sanitize_key($this->field['type']); $args['capability'] = 'read'; $args['settings'] = sanitize_key($this->field['type']) . '_demo_3'; $args['label'] = sprintf(__('%s theme_mod via API', 'kirki'), $args['type']); $args['option_type'] = 'theme_mod'; Kirki::add_field('', $args); $args['settings'] = sanitize_key($this->field['type']) . '_demo_4'; $args['label'] = sprintf(__('%s single option via API', 'kirki'), $args['type']); $args['option_type'] = 'option'; Kirki::add_field('', $args); $args['settings'] = sanitize_key($this->field['type']) . '_demo_5'; $args['option_type'] = 'option'; $args['label'] = sprintf(__('%s serialized option via API', 'kirki'), $args['type']); $args['option_name'] = 'kirki_test'; Kirki::add_field('', $args); }
/** * Add the script to the footer */ function customize_controls_print_footer_scripts() { $fields = Kirki::fields()->get_all(); $scripts = array(); foreach ($fields as $field) { if ('number' == $field['type']) { $scripts[] = '$( "#customize-control-' . $field['settings'] . ' input[type=\'number\']").stepper();'; } } // No need to echo anything if the script is empty if (empty($scripts)) { return; } // Make sure we don't add any duplicates $scripts = array_unique($scripts); // Convert array to string $script = implode('', $scripts); echo Kirki_Scripts_Registry::prepare($script); }
public function test() { $this->assertEquals(kirki_get_option(), Kirki::get_option()); $this->assertEquals(kirki_sanitize_hex('#ffffff'), Kirki_Color::sanitize_hex('#ffffff')); $this->assertEquals(kirki_get_rgb('#ffffff'), Kirki_Color::get_rgb('#ffffff')); $this->assertEquals(kirki_get_rgba('#ffffff'), Kirki_Color::get_rgba('#ffffff')); $this->assertEquals(kirki_get_brightness('#ffffff'), Kirki_Color::get_brightness('#ffffff')); $font_registry = Kirki_Toolkit::fonts(); $this->assertEquals(Kirki_Fonts::get_all_fonts(), $font_registry->get_all_fonts()); $this->assertEquals(Kirki_Fonts::get_font_choices(), $font_registry->get_font_choices()); $this->assertEquals(Kirki_Fonts::is_google_font('foo'), $font_registry->is_google_font('foo')); $this->assertEquals(Kirki_Fonts::get_google_font_uri(array('foo')), $font_registry->get_google_font_uri(array('foo'))); $this->assertEquals(Kirki_Fonts::get_google_font_subsets(), $font_registry->get_google_font_subsets()); $this->assertEquals(Kirki_Fonts::choose_google_font_variants('Roboto'), $font_registry->choose_google_font_variants('Roboto')); $this->assertEquals(Kirki_Fonts::get_standard_fonts(), $font_registry->get_standard_fonts()); $this->assertEquals(Kirki_Fonts::get_font_stack('foo'), $font_registry->get_font_stack('foo')); $this->assertEquals(Kirki_Fonts::sanitize_font_choice('foo'), $font_registry->sanitize_font_choice('foo')); $this->assertEquals(Kirki_Fonts::get_google_fonts(), $font_registry->get_google_fonts()); }
/** * Render the control's content. */ protected function render_content() { ?> <?php $i18n = Kirki::i18n(); ?> <label> <div class="switch-info"> <input style="display: none;" type="checkbox" value="<?php echo esc_attr($this->value()); ?> " <?php $this->link(); checked($this->value()); ?> /> </div> <?php $this->label(); ?> <?php $this->description(); ?> <?php $classes = esc_attr($this->value()) ? ' On' : ' Off'; ?> <div class="Switch <?php echo esc_attr($classes); ?> "> <div class="Toggle"></div> <span class="On"><?php echo esc_html($i18n['ON']); ?> </span> <span class="Off"><?php echo esc_html($i18n['OFF']); ?> </span> </div> </label> <?php }
/** * Add the help bubble */ function customize_controls_print_footer_scripts() { $fields = Kirki::fields()->get_all(); $scripts = array(); $script = ''; foreach ($fields as $field) { if (!empty($field['help'])) { $bubble_content = $field['help']; $content = "<a href='#' class='tooltip hint--left' data-hint='" . strip_tags(esc_html($bubble_content)) . "'><span class='dashicons dashicons-info'></span></a>"; $scripts[] = '$( "' . $content . '" ).prependTo( "#customize-control-' . $field['settings'] . '" );'; } } // No need to echo anything if the script is empty if (empty($scripts)) { return; } // Make sure we don't add any duplicates $scripts = array_unique($scripts); // Convert array to string $script = implode('', $scripts); echo Kirki_Scripts_Registry::prepare($script); }
/** * Adds custom classes to the array of body classes. * ================================================ * @param array $classes Classes for the body element. * @return array */ function infinity_body_classes($classes) { // Adds a class of group-blog to blogs with more than 1 published author. if (is_multi_author()) { $classes[] = 'group-blog'; } global $infinity_custom_class; if ($infinity_custom_class) { $classes[] = $infinity_custom_class; } if (Kirki::get_option('infinity', 'site_general_boxed') == 1) { $classes[] = 'boxed'; } $classes[] = Kirki::get_option('infinity', 'header_type'); global $infinity_page_layout_private; if ($infinity_page_layout_private != 'default' && class_exists('cmb2_bootstrap_205')) { $layout = get_post_meta(get_the_ID(), "infinity_page_layout_private", true); } else { $layout = Kirki::get_option('infinity', 'page_layout'); } $classes[] = $layout; return $classes; }
/** * Returns the Kirki object */ function Kirki() { // Make sure the class is instanciated $kirki = Kirki_Toolkit::get_instance(); $kirki->font_registry = new Kirki_Fonts_Font_Registry(); $kirki->api = new Kirki(); $kirki->scripts = new Kirki_Scripts_Registry(); $kirki->styles = array('back' => new Kirki_Styles_Customizer(), 'front' => new Kirki_Styles_Frontend()); /** * The path of the current Kirki instance */ Kirki::$path = dirname(__FILE__); /** * The URL of the current Kirki instance */ if (false !== strpos(dirname(__FILE__), WP_PLUGIN_DIR)) { /** * Kirki is activated as a plugin. */ Kirki::$url = plugin_dir_url(__FILE__); } else { if (false !== strpos(dirname(__FILE__), get_template_directory())) { /** * Kirki is embedded in a theme */ Kirki::$url = get_template_directory_uri() . str_replace(get_template_directory(), '', dirname(__FILE__)); } } /** * Apply the filters to the Kirki::$url */ $config = apply_filters('kirki/config', array()); if (isset($config['url_path'])) { Kirki::$url = esc_url_raw($config['url_path']); } return $kirki; }
/** * Get the value of a field. */ function kirki_get_option($option = '') { // Make sure the class is instanciated Kirki::get_instance(); // Get the array of all the fields. $fields = Kirki::fields()->get_all(); // Get the config. $config = Kirki::config()->get_all(); /** * If no setting has been defined then return all. */ if ('' == $option) { if ('option' == $config['options_type']) { $values = array(); foreach ($fields as $field) { $values[] = get_option($field['settings'], $field['default']); } } else { $values = get_theme_mods(); } return $values; } // If a value has been defined then we proceed. // Early exit if this option does not exist if (!isset($fields[$option])) { return; } $option_name = $fields[$option]['settings']; $default = $fields[$option]['default']; if ('option' == $config['options_type']) { $value = get_option($option_name, $default); } else { $value = get_theme_mod($option_name, $default); } return $value; }
')"> <div class="container"> <div class="row middle"> <div class="col-md-6"> <?php the_archive_title('<h1 class="entry-title">', '</h1>'); the_archive_description('<div class="taxonomy-description">', '</div>'); ?> </div> <?php if (function_exists('tm_bread_crumb')) { ?> <div class="breadcrumb col-md-6 end"> <div class="container"> <?php echo tm_bread_crumb(array('home_label' => Kirki::get_option('tm-polygon', 'site_general_breadcrumb_home_text'))); ?> </div> </div> <?php } ?> </div> </div> </header> <div class="container"> <div class="row"> <?php if ($tm_polygon_layout == 'sidebar-content') { ?> <?php
<?php /** * The signup header partial for the Page Builder * * @package FlatBook */ $title = get_sub_field('header_title'); $descr = get_sub_field('header_descr', false, false); $small = get_sub_field('header_small'); $signup = get_sub_field('header_signup_form'); $sanim = get_sub_field('header_signup_anim'); $tanim = get_sub_field('header_title_anim'); $bgimg = Kirki::get_option('fb', 'layout_header_home_header_background_image'); ?> <header id="site-header" class="signup-header" <?php if ($bgimg) { echo 'data-image-src="' . $bgimg . '" ' . 'data-parallax="scroll"'; } else { echo 'style="background-color: #444;"'; } ?> > <div class="container"> <div class="row">
<?php /** * Woo Layout * ================ */ $section = 'woo_layout'; $priority = 1; Kirki::add_field('infinity', array('type' => 'radio-image', 'setting' => 'woo_layout_category', 'label' => __('Category Product Page Layout', 'infinity'), 'description' => __('Choose the category product page layout you want', 'infinity'), 'help' => __('Choose the category product page layout you want', 'infinity'), 'section' => $section, 'priority' => $priority++, 'default' => 'sidebar-content', 'choices' => array('full-width' => THEME_ROOT . '/core/customizer/images/1c.png', 'content-sidebar' => THEME_ROOT . '/core/customizer/images/2cr.png', 'sidebar-content' => THEME_ROOT . '/core/customizer/images/2cl.png'))); Kirki::add_field('infinity', array('type' => 'radio-image', 'setting' => 'woo_layout_single_product', 'label' => __('Single Product Page Layout', 'infinity'), 'description' => __('Choose the product page layout you want', 'infinity'), 'help' => __('Choose the product page layout you want', 'infinity'), 'section' => $section, 'priority' => $priority++, 'default' => 'sidebar-content', 'choices' => array('full-width' => THEME_ROOT . '/core/customizer/images/1c.png', 'content-sidebar' => THEME_ROOT . '/core/customizer/images/2cr.png', 'sidebar-content' => THEME_ROOT . '/core/customizer/images/2cl.png')));
public static function add_field($config_id, $args) { if (is_array($config_id) && empty($args)) { $args = $config_id; $config_id = 'global'; } $config_id = '' == $config_id ? 'global' : $config_id; /** * Get the configuration options */ if (!isset(Kirki::$config[$config_id])) { $config_id = 'global'; } $config = Kirki::$config[$config_id]; /** * If we've set an option in the configuration * then make sure we're using options and not theme_mods */ if ('' != $config['option_name']) { $config['option_type'] = 'option'; } /** * If no option name has been set for the field, * use the one from the configuration */ if (!isset($args['option_name'])) { $args['option_name'] = $config['option_name']; } /** * If no capability has been set for the field, * use the one from the configuration */ if (!isset($args['capability'])) { $args['capability'] = $config['capability']; } /** * Check if [settings] is set. * If not set, check for [setting]. * After this check is complete, we'll do some additional tweaking * based on whether this is an option or a theme_mod. * If an option and option_name is also defined, * then we'll have to change the setting. */ if (!isset($args['settings']) && isset($args['setting'])) { $args['settings'] = $args['setting']; } if (is_array($args['settings'])) { $settings = array(); foreach ($args['settings'] as $setting_key => $setting_value) { $settings[sanitize_key($setting_key)] = esc_attr($setting_value); if ('option' == $config['option_type'] && '' != $config['option_name'] && false === strpos($setting_key, '[')) { $settings[sanitize_key($setting_key)] = esc_attr($config['option_name']) . '[' . esc_attr($setting_value) . ']'; } } $args['settings'] = $settings; } else { if ('option' == $config['option_type'] && '' != $config['option_name'] && false === strpos($args['settings'], '[')) { $args['settings'] = esc_attr($args['option_name']) . '[' . esc_attr($args['settings']) . ']'; } else { $args['settings'] = esc_attr($args['settings']); } } /** * If no option-type has been set for the field, * use the one from the configuration */ if (!isset($args['option_type'])) { $args['option_type'] = $config['option_type']; } /** * Add the field to the static $fields variable properly indexed */ Kirki::$fields[$args['settings']] = $args; if ('background' == $args['type']) { /** * Build the background fields */ Kirki::$fields = Kirki_Explode_Background_Field::process_fields(Kirki::$fields); } }
/** * loop through all fields and create an array of style definitions */ public function loop_controls() { $fields = Kirki::fields()->get_all(); $styles = array(); // Early exit if no fields are found. if (!$fields || empty($fields)) { return; } foreach ($fields as $field) { $element = ''; $property = ''; $units = ''; $prefix = ''; $suffix = ''; $callback = ''; // Only continue if $field['output'] is set if (isset($field['output'])) { // Check if this is an array of style definitions $multiple_styles = isset($field['output'][0]['element']) ? true : false; if (!$multiple_styles) { // single style // If $field['output'] is not an array, then use the string as the target element if (is_string($field['output'])) { $element = $field['output']; } else { $element = isset($field['output']['element']) ? $field['output']['element'] : ''; $property = isset($field['output']['property']) ? $field['output']['property'] : ''; $units = isset($field['output']['units']) ? $field['output']['units'] : ''; $prefix = isset($field['output']['prefix']) ? $field['output']['prefix'] : ''; $suffix = isset($field['output']['suffix']) ? $field['output']['suffix'] : ''; $callback = isset($field['output']['callback']) ? $field['output']['callback'] : ''; } $styles = $this->setting_styles($field, $styles, $element, $property, $units, $prefix, $suffix, $callback); } else { // Multiple styles set foreach ($field['output'] as $style) { if (!array($style)) { $element = $style; } else { $element = isset($style['element']) ? $style['element'] : ''; $property = isset($style['property']) ? $style['property'] : ''; $units = isset($style['units']) ? $style['units'] : ''; $prefix = isset($style['prefix']) ? $style['prefix'] : ''; $suffix = isset($style['suffix']) ? $style['suffix'] : ''; $callback = isset($style['callback']) ? $style['callback'] : ''; } $styles = $this->setting_styles($field, $styles, $element, $property, $units, $prefix, $suffix, $callback); } } } } return $styles; }