<?php /** * Customizer Setup and Customize Controls */ /** * Adds the individual sections, settings, and controls to the theme customizer */ class Tmpcoder_initialise_customizer_settings { public function __construct() { // Register Panels add_action( 'customize_register', array( $this, 'tmpcoder_add_customizer_panels' ) ); // Register sections add_action( 'customize_register', array( $this, 'tmpcoder_add_customizer_sections' ) ); // Register Layout controls add_action( 'customize_register', array( $this, 'tmpcoder_layout_controls' ) ); // Register Global Colors controls add_action( 'customize_register', array( $this, 'tmpcoder_global_colors_controls' ) ); // Register Typography controls add_action( 'customize_register', array( $this, 'tmpcoder_typography_desktop_controls' ) ); add_action( 'customize_register', array( $this, 'tmpcoder_typography_tablet_controls' ) ); add_action( 'customize_register', array( $this, 'tmpcoder_typography_mobile_controls' ) ); // Register Buttons controls add_action( 'customize_register', array( $this, 'tmpcoder_buttons_desktop_controls' ) ); add_action( 'customize_register', array( $this, 'tmpcoder_buttons_tablet_controls' ) ); add_action( 'customize_register', array( $this, 'tmpcoder_buttons_mobile_controls' ) ); // Register Footer controls add_action( 'customize_register', array( $this, 'tmpcoder_footer_controls' ) ); add_action( 'customize_register', array( $this, 'tmpcoder_site_identify_logo_show_controls' ) ); } /** * Register the Customizer panels */ public function tmpcoder_add_customizer_panels( $wp_customize ) { // remove wp default colors section $wp_customize->remove_section('colors'); /** * Add Typography Panel */ $title = __( 'Typography', 'spexo' ); $wp_customize->add_panel( 'typography_panel', array( 'title' => esc_html( $title ), 'priority' => 3, ) ); /** * Add Buttons Panel */ $wp_customize->add_panel( 'buttons_panel', array( 'title' => esc_html__( 'Buttons', 'spexo' ), 'priority' => 4, ) ); } /** * Register the Customizer sections */ public function tmpcoder_add_customizer_sections( $wp_customize ) { /** * Add Upsell Section */ $wp_customize->add_section( new Tmpcoder_Upsell_Section( $wp_customize, 'upsell_section', array( 'title' => esc_html__( 'Spexo Addons PRO Features', 'spexo' ), 'url' => TMPCODER_PURCHASE_PRO_URL.'?ref=tmpcoder-customizer', 'backgroundcolor' => '#5729d9', 'textcolor' => '#fff', 'priority' => 0, ) ) ); /** * Add Layout Section */ $wp_customize->add_section( 'layout_section', array( 'title' => esc_html__( 'Layout', 'spexo' ), 'priority' => 1, ) ); /** * Add Global Colors Section */ $wp_customize->add_section( 'global_colors', array( 'title' => esc_html__( 'Global Colors', 'spexo' ), 'description' => esc_html__( 'Add color to theme primary color, secondary color, background color and button color etc.', 'spexo' ), 'priority' => 2, ) ); /** * Add Typography Desktop Section */ $wp_customize->add_section( 'typography_desktop', array( 'title' => esc_html__( 'Desktop', 'spexo' ), 'description' => esc_html__( 'Set site fonts & headings for Desktop', 'spexo' ), 'panel' => 'typography_panel' ) ); /** * Add Typography Tablet Section */ $wp_customize->add_section( 'typography_tablet', array( 'title' => esc_html__( 'Tablet', 'spexo' ), 'description' => esc_html__( 'Set site fonts & headings for Tablet', 'spexo' ), 'panel' => 'typography_panel' ) ); /** * Add Typography Mobile Section */ $wp_customize->add_section( 'typography_mobile', array( 'title' => esc_html__( 'Mobile', 'spexo' ), 'description' => esc_html__( 'Set site fonts & headings for Mobile', 'spexo' ), 'panel' => 'typography_panel' ) ); /** * Add Buttons Desktop Section */ $wp_customize->add_section( 'buttons_desktop', array( 'title' => esc_html__( 'Desktop', 'spexo' ), 'description' => esc_html__( 'Set button colors, background & font style for Desktop', 'spexo' ), 'panel' => 'buttons_panel' ) ); /** * Add Buttons Tablet Section */ $wp_customize->add_section( 'buttons_tablet', array( 'title' => esc_html__( 'Tablet', 'spexo' ), 'description' => esc_html__( 'Set button font style for tablet', 'spexo' ), 'panel' => 'buttons_panel' ) ); /** * Add Buttons Mobile Section */ $wp_customize->add_section( 'buttons_mobile', array( 'title' => esc_html__( 'Mobile', 'spexo' ), 'description' => esc_html__( 'Set button font style for mobile', 'spexo' ), 'panel' => 'buttons_panel' ) ); /** * Add Footer Options Section */ $wp_customize->add_section( 'footer_options', array( 'title' => esc_html__( 'Footer Options', 'spexo' ), 'priority' => 4, ) ); } /** * Register layout controls */ public function tmpcoder_layout_controls( $wp_customize ) { // Container width customize control (desktop) $wp_customize->add_setting( 'container_width', array( 'default' => 1200, 'transport' => 'postMessage', 'sanitize_callback' => 'absint' ) ); $wp_customize->add_control( new Tmpcoder_Slider_Customize_Control( $wp_customize, 'container_width_control', array( 'label' => esc_html__( 'Container Width (Desktop)', 'spexo' ), 'section' => 'layout_section', 'settings' => 'container_width', 'input_attrs' => array( 'min' => 1024, 'max' => 1920, 'step' => 1, ), ) ) ); // Container width customize control (tablet) $wp_customize->add_setting( 'container_width_tablet', array( 'default' => '1000', 'transport' => 'postMessage', 'sanitize_callback' => 'absint' ) ); $wp_customize->add_control( new Tmpcoder_Slider_Customize_Control( $wp_customize, 'container_width_tablet_control', array( 'label' => esc_html__( 'Container Width (Tablet)', 'spexo' ), 'section' => 'layout_section', 'settings' => 'container_width_tablet', 'input_attrs' => array( 'min' => 768, 'max' => 1023, 'step' => 1, ), ) ) ); // Container width customize control (mobile) $wp_customize->add_setting( 'container_width_mobile', array( 'default' => '500', 'transport' => 'postMessage', 'sanitize_callback' => 'absint' ) ); $wp_customize->add_control( new Tmpcoder_Slider_Customize_Control( $wp_customize, 'container_width_mobile_control', array( 'label' => esc_html__( 'Container Width (Mobile)', 'spexo' ), 'section' => 'layout_section', 'settings' => 'container_width_mobile', 'input_attrs' => array( 'min' => 320, 'max' => 767, 'step' => 1, ), ) ) ); } /** * Register Global Colors controls */ public function tmpcoder_global_colors_controls( $wp_customize ) { $controls = array( array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'primary_color', 'default' => '#5729d9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Primary Color", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'secondary_color', 'default' => '#010101', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Secondary Color", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'accent_color', 'default' => '#b2b1b1', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Accent Color", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'site_background_color', 'default' => '#ffffff', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Body Background", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'link_color', 'default' => '#5729d9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Link Color", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'link_hover_color', 'default' => '#5729d9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Link Hover Color", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'border_color', 'default' => '#E6E8EA', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Border Color", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'theme_color_1', 'default' => '#010101', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Theme Color 1", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'theme_color_2', 'default' => '#f4f2f9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Theme Color 2", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'theme_color_3', 'default' => '#ffffff', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Theme Color 3", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'theme_color_4', 'default' => '#ffffff', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Theme Color 4", 'spexo' ), 'section' => 'global_colors', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), ); foreach ( $controls as $control ) { $wp_customize->add_setting( $control['setting'], array( 'default' => $control['default'], 'transport' => isset($control['transport']) ? $control['transport'] : 'postMessage', 'sanitize_callback' => $control['sanitize'], ) ); $control_class = $control['control']; $control_args = array( 'label' => $control['label'], 'section' => $control['section'], ); if ( isset( $control['description'] ) ) { $control_args['description'] = $control['description']; } if ( isset( $control['input_attrs'] ) ) { $control_args['input_attrs'] = $control['input_attrs']; } if ( isset( $control['choices'] ) ) { $control_args['choices'] = $control['choices']; } $wp_customize->add_control( new $control_class( $wp_customize, $control['setting'], $control_args ) ); } } /** * Register Typography Desktop controls */ public function tmpcoder_typography_desktop_controls( $wp_customize ) { // Define common settings and controls dynamically in an array $controls = array( array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => 'site_fonts_options_title', 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( 'Site Fonts', 'spexo' ), 'section' => 'typography_desktop', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Google_Font_Select_Customize_Control', 'setting' => 'site_fonts_options_font-family', 'default' => json_encode( array( 'font' => 'Open Sans', 'regularweight' => 'regular', 'category' => 'sans-serif' ) ), 'sanitize' => 'tmpcoder_google_font_sanitization', 'label' => '', 'description' => esc_html__( 'Font Family', 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'font_count' => 'all', 'orderby' => 'alpha', ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "site_fonts_options_font-size", 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Font Size (px)", 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'min' => 14, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "site_fonts_options_line-height", 'default' => 1.5, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Line Height", 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => 0.1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "site_fonts_options_letter-spacing", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Letter Spacing (px)", 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => 0.1, ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'site_fonts_options_color', 'default' => '#727272', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => '', 'description' => esc_html__( 'Font Color', 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), ); // Add H1-H6 controls foreach ( range( 1, 6 ) as $heading_level ) { $controls = array_merge( $controls, array( array( 'control' => 'Tmpcoder_Divider_Customize_Control', // 'setting' => "heading_{$heading_level}_divider", /* translators: %s: Heading level */ 'setting' => sprintf(__('heading_%s_divider', 'spexo'), $heading_level), 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'typography_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => "heading_{$heading_level}_title", 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', /* translators: %s: This is the heading level */ 'label' => sprintf(esc_html__('Heading %s Font', 'spexo'), $heading_level), 'section' => 'typography_desktop', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Google_Font_Select_Customize_Control', 'setting' => "heading_{$heading_level}_font-family", 'default' => json_encode( array( 'font' => 'Poppins', 'regularweight' => 'regular', 'category' => 'sans-serif' ) ), 'sanitize' => 'tmpcoder_google_font_sanitization', 'label' => '', 'description' => esc_html__( 'Font Family', 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'font_count' => 'all', 'orderby' => 'alpha', ), ), array( 'control' => 'Tmpcoder_Dropdown_Select2_Customize_Control', 'type' => 'select', 'setting' => "heading_{$heading_level}_text-transform", 'default' => 'initial', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( "Text Transform", 'spexo' ), 'section' => 'typography_desktop', 'choices' => array( 'none' => esc_html__( 'None', 'spexo' ), 'capitalize' => esc_html__( 'Capitalize', 'spexo' ), 'uppercase' => esc_html__( 'Uppercase', 'spexo' ), 'lowercase' => esc_html__( 'Lowercase', 'spexo' ), 'initial' => esc_html__( 'Initial', 'spexo' ), 'inherit' => esc_html__( 'Inherit', 'spexo' ), ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_font-size", 'default' => (48 -( $heading_level * 6)), 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Font Size (px)", 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'min' => 16, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_line-height", 'default' => 1.2, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Line Height", 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => 0.1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_letter-spacing", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Letter Spacing (px)", 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => 0.1, ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => "heading_{$heading_level}_color", 'default' => '#1d2327', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => '', 'description' => esc_html__( 'Font Color', 'spexo' ), 'section' => 'typography_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), ) ); } // Loop through the controls array and add settings and controls foreach ( $controls as $control ) { $wp_customize->add_setting( $control['setting'], array( 'default' => $control['default'], 'transport' => isset($control['transport']) ? $control['transport'] : 'postMessage', 'sanitize_callback' => $control['sanitize'], ) ); $control_class = $control['control']; $control_args = array( 'label' => $control['label'], 'section' => $control['section'], ); if ( isset( $control['description'] ) ) { $control_args['description'] = $control['description']; } if ( isset( $control['input_attrs'] ) ) { $control_args['input_attrs'] = $control['input_attrs']; } if ( isset( $control['type'] ) ) { $control_args['type'] = $control['type']; } if ( isset( $control['choices'] ) ) { $control_args['choices'] = $control['choices']; } if ( $control_class === 'WP_Customize_Control' ) { $wp_customize->add_control( $control['setting'], $control_args ); } else { $wp_customize->add_control( new $control_class( $wp_customize, $control['setting'], $control_args ) ); } } } /** * Register Typography Tablet controls */ public function tmpcoder_typography_tablet_controls( $wp_customize ) { // Define the controls dynamically in an array $controls = array( // Site font tablet controls - start array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => 'site_fonts_options_tablet_title', 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( 'Site Fonts', 'spexo' ), 'section' => 'typography_tablet', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => 'site_fonts_options_tablet_font-size', 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Font Size (px)', 'spexo' ), 'section' => 'typography_tablet', 'input_attrs' => array( 'min' => 14, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => 'site_fonts_options_tablet_line-height', 'default' => 1.5, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Line Height', 'spexo' ), 'section' => 'typography_tablet', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => .1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => 'site_fonts_options_tablet_letter-spacing', 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Letter Spacing (px)', 'spexo' ), 'section' => 'typography_tablet', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => .1, ), ), ); // Site font tablet controls - end // Add H1-H6 controls foreach ( range( 1, 6 ) as $heading_level ) { $controls = array_merge( $controls, array( array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "heading_{$heading_level}_tablet_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'typography_tablet', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => "heading_{$heading_level}_tablet_title", 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', /* translators: %s: This is the heading level */ 'label' => sprintf(esc_html__('Heading %s Font', 'spexo'), $heading_level), 'section' => 'typography_tablet', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_tablet_font-size", 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Font Size (px)', 'spexo' ), 'section' => 'typography_tablet', 'input_attrs' => array( 'min' => 16, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_tablet_line-height", 'default' => 1.5, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Line Height', 'spexo' ), 'section' => 'typography_tablet', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => .1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_tablet_letter-spacing", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Letter Spacing (px)', 'spexo' ), 'section' => 'typography_tablet', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => .1, ), ), ) ); } // Loop through the controls array and add settings and controls foreach ( $controls as $control ) { $wp_customize->add_setting( $control['setting'], array( 'default' => $control['default'], 'transport' => isset($control['transport']) ? $control['transport'] : 'postMessage', 'sanitize_callback' => $control['sanitize'], ) ); $control_class = $control['control']; $control_args = array( 'label' => $control['label'], 'section' => $control['section'], ); // Merge input attributes if provided if ( isset( $control['input_attrs'] ) ) { $control_args['input_attrs'] = $control['input_attrs']; } $wp_customize->add_control( new $control_class( $wp_customize, $control['setting'], $control_args ) ); } } /** * Register Typography Mobile controls */ public function tmpcoder_typography_mobile_controls( $wp_customize ) { $controls = array( // Site font mobile controls - start array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => 'site_fonts_options_mobile_title', 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( 'Site Fonts', 'spexo' ), 'section' => 'typography_mobile', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => 'site_fonts_options_mobile_font-size', 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Font Size (px)', 'spexo' ), 'section' => 'typography_mobile', 'input_attrs' => array( 'min' => 14, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => 'site_fonts_options_mobile_line-height', 'default' => 1.5, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Line Height', 'spexo' ), 'section' => 'typography_mobile', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => .1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => 'site_fonts_options_mobile_letter-spacing', 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Letter Spacing (px)', 'spexo' ), 'section' => 'typography_mobile', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => .1, ), ), ); // Site font mobile controls - end // Add H1-H6 controls foreach ( range( 1, 6 ) as $heading_level ) { $controls = array_merge( $controls, array( array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "heading_{$heading_level}_mobile_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'typography_mobile', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => "heading_{$heading_level}_mobile_title", 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', /* translators: %s: This is the heading level */ 'label' => sprintf(esc_html__('Heading %s Font', 'spexo'), $heading_level), 'section' => 'typography_mobile', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_mobile_font-size", 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Font Size (px)', 'spexo' ), 'section' => 'typography_mobile', 'input_attrs' => array( 'min' => 16, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_mobile_line-height", 'default' => 1.5, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Line Height', 'spexo' ), 'section' => 'typography_mobile', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => .1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "heading_{$heading_level}_mobile_letter-spacing", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( 'Letter Spacing (px)', 'spexo' ), 'section' => 'typography_mobile', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => .1, ), ), ) ); } // Loop through the controls array and add settings and controls foreach ( $controls as $control ) { $wp_customize->add_setting( $control['setting'], array( 'default' => $control['default'], 'transport' => isset($control['transport']) ? $control['transport'] : 'postMessage', 'sanitize_callback' => $control['sanitize'], ) ); $control_class = $control['control']; $control_args = array( 'label' => $control['label'], 'section' => $control['section'], ); // Merge input attributes if provided if ( isset( $control['input_attrs'] ) ) { $control_args['input_attrs'] = $control['input_attrs']; } $wp_customize->add_control( new $control_class( $wp_customize, $control['setting'], $control_args ) ); } } /** * Register Buttons Desktop controls */ public function tmpcoder_buttons_desktop_controls( $wp_customize ) { $controls = array( array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => 'button_style_title', 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( 'Button Style', 'spexo' ), 'section' => 'buttons_desktop', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Google_Font_Select_Customize_Control', 'setting' => 'button_style_font-family', 'default' => json_encode( array( 'font' => 'open sans', 'regularweight' => 'regular', 'category' => 'sans-serif' ) ), 'sanitize' => 'tmpcoder_google_font_sanitization', 'label' => '', 'description' => esc_html__( 'Font Family', 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'font_count' => 'all', 'orderby' => 'alpha', ), ), array( 'control' => 'Tmpcoder_Dropdown_Select2_Customize_Control', 'setting' => "button_style_text-align", 'default' => 'initial', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( "Text Align", 'spexo' ), 'section' => 'buttons_desktop', 'choices' => array( 'inherit' => esc_html__( 'Inherit', 'spexo' ), 'left' => esc_html__( 'Left', 'spexo' ), 'right' => esc_html__( 'Right', 'spexo' ), 'center' => esc_html__( 'Center', 'spexo' ), 'justify' => esc_html__( 'Justify', 'spexo' ), 'initial' => esc_html__( 'Initial', 'spexo' ), ), ), array( 'control' => 'Tmpcoder_Dropdown_Select2_Customize_Control', 'setting' => "button_style_text-transform", 'default' => 'initial', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( "Text Transform", 'spexo' ), 'section' => 'buttons_desktop', 'choices' => array( 'none' => esc_html__( 'None', 'spexo' ), 'capitalize' => esc_html__( 'Capitalize', 'spexo' ), 'uppercase' => esc_html__( 'Uppercase', 'spexo' ), 'lowercase' => esc_html__( 'Lowercase', 'spexo' ), 'initial' => esc_html__( 'Initial', 'spexo' ), 'inherit' => esc_html__( 'Inherit', 'spexo' ), ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_font-size", 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Font Size (px)", 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'min' => 16, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_line-height", 'default' => 24, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Line Height", 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'min' => 1, 'max' => 30, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_letter-spacing", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Letter Spacing (px)", 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => 0.1, ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'button_style_color', 'default' => '#ffffff', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => '', 'description' => esc_html__( 'Font Color', 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), // Set your theme site button font hover color control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "site_button_text_hover_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'half', 'type' => 'solid', 'margintop' => -5, 'marginbottom' => -5, ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'site_button_text_hover', 'default' => '#5729d9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Site Button Font Hover Color", 'spexo' ), 'description' => esc_html__( 'Set your theme site button font hover color', 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), // Site Button Background Color control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "site_button_color_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'site_button_color', 'default' => '#5729d9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Site Button Background Color", 'spexo' ), 'description' => esc_html__( 'Set your theme site button background color', 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), // Site Button Background Hover Color control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "site_button_color_hover_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'half', 'type' => 'solid', 'margintop' => -5, 'marginbottom' => -5, ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'site_button_color_hover', 'default' => '#ffffff', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => esc_html__( "Site Button Background Hover Color", 'spexo' ), 'description' => esc_html__( 'Set your theme site button background hover color', 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), // Button Border control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "button_border_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Dimensional_Customize_Control', 'setting' => "button_border", 'default' => json_encode( array( 'top' => 5, 'right' => 10, 'bottom' => 5, 'left' => 10 ) ), 'sanitize' => 'tmpcoder_dimensions_sanitization', 'label' => esc_html__( "Button Border", 'spexo' ), 'section' => 'buttons_desktop', ), array( 'control' => 'Tmpcoder_Dropdown_Select2_Customize_Control', 'setting' => "button_border_border-style", 'default' => 'solid', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => '', 'section' => 'buttons_desktop', 'choices' => array( 'solid' => esc_html__( 'Solid', 'spexo' ), 'dashed' => esc_html__( 'Dashed', 'spexo' ), 'dotted' => esc_html__( 'Dotted', 'spexo' ), 'double' => esc_html__( 'Double', 'spexo' ), 'none' => esc_html__( 'None', 'spexo' ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'button_border_border-color', 'default' => '#5729d9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => '', 'section' => 'buttons_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), // Button Border Hover control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "button_border_hover_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'half', 'type' => 'solid', 'margintop' => -5, 'marginbottom' => -5, ), ), array( 'control' => 'Tmpcoder_Dimensional_Customize_Control', 'setting' => "button_border_hover", 'default' => json_encode( array( 'top' => 5, 'right' => 10, 'bottom' => 5, 'left' => 10 ) ), 'sanitize' => 'tmpcoder_dimensions_sanitization', 'label' => esc_html__( "Button Border Hover", 'spexo' ), 'section' => 'buttons_desktop', ), array( 'control' => 'Tmpcoder_Dropdown_Select2_Customize_Control', 'setting' => "button_border_hover_border-style", 'default' => 'solid', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => '', 'section' => 'buttons_desktop', 'choices' => array( 'solid' => esc_html__( 'Solid', 'spexo' ), 'dashed' => esc_html__( 'Dashed', 'spexo' ), 'dotted' => esc_html__( 'Dotted', 'spexo' ), 'double' => esc_html__( 'Double', 'spexo' ), 'none' => esc_html__( 'None', 'spexo' ), ), ), array( 'control' => 'Tmpcoder_Alpha_Color_Control', 'setting' => 'button_border_hover_border-color', 'default' => '#5729d9', 'sanitize' => 'tmpcoder_hex_rgba_sanitization', 'label' => '', 'section' => 'buttons_desktop', 'input_attrs' => array( 'resetalpha' => false, 'palette' => array( 'rgba(99,78,150,1)', 'rgba(67,78,150,1)', 'rgba(34,78,150,.7)', 'rgba(3,78,150,1)', 'rgba(7,110,230,.9)', 'rgba(234,78,150,1)', 'rgba(99,78,150,.5)', 'rgba(190,120,120,.5)', ), ), ), // Button border radius control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "button_border_radius_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_border_radius", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Button Border Radius", 'spexo' ), // 'description' => esc_html__( 'if set Border Radius - 0 then Border Radius unset', 'spexo' ), 'section' => 'buttons_desktop', 'input_attrs' => array( 'min' => 0, 'max' => 100, 'step' => 1, ), ), // Button padding control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "button_padding_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_desktop', 'transport' => 'postMessage', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Dimensional_Customize_Control', 'setting' => "button_padding", 'default' => json_encode( array( 'top' => 5, 'right' => 10, 'bottom' => 5, 'left' => 10 ) ), 'sanitize' => 'tmpcoder_dimensions_sanitization', 'label' => esc_html__( "Button Padding", 'spexo' ), 'section' => 'buttons_desktop', ), ); // Loop through the controls array and add settings and controls foreach ( $controls as $control ) { $wp_customize->add_setting( $control['setting'], array( 'default' => $control['default'], 'transport' => isset($control['transport']) ? $control['transport'] : 'postMessage', 'sanitize_callback' => $control['sanitize'], ) ); $control_class = $control['control']; $control_args = array( 'label' => $control['label'], 'section' => $control['section'], ); if ( isset( $control['description'] ) ) { $control_args['description'] = $control['description']; } if ( isset( $control['input_attrs'] ) ) { $control_args['input_attrs'] = $control['input_attrs']; } if ( isset( $control['choices'] ) ) { $control_args['choices'] = $control['choices']; } $wp_customize->add_control( new $control_class( $wp_customize, $control['setting'], $control_args ) ); } } /** * Register Buttons Tablet controls */ public function tmpcoder_buttons_tablet_controls( $wp_customize ) { // Define common settings and controls dynamically in an array $controls = array( array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => 'button_style_tablet_options_title', 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( 'Button Style', 'spexo' ), 'section' => 'buttons_tablet', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_tablet_font-size", 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Font Size (px)", 'spexo' ), 'section' => 'buttons_tablet', 'input_attrs' => array( 'min' => 16, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_tablet_line-height", 'default' => 1.5, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Line Height", 'spexo' ), 'section' => 'buttons_tablet', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => 0.1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_tablet_letter-spacing", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Letter Spacing (px)", 'spexo' ), 'section' => 'buttons_tablet', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => 0.1, ), ), // Button padding tablet control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "button_padding_tablet_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_tablet', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Dimensional_Customize_Control', 'setting' => "button_padding_tablet", 'default' => json_encode( array( 'top' => 5, 'right' => 10, 'bottom' => 5, 'left' => 10 ) ), 'sanitize' => 'tmpcoder_dimensions_sanitization', 'label' => esc_html__( "Button Padding", 'spexo' ), 'section' => 'buttons_tablet', ), ); // Loop through the controls array and add settings and controls foreach ( $controls as $control ) { $wp_customize->add_setting( $control['setting'], array( 'default' => $control['default'], 'transport' => isset($control['transport']) ? $control['transport'] : 'postMessage', 'sanitize_callback' => $control['sanitize'], ) ); $control_class = $control['control']; $control_args = array( 'label' => $control['label'], 'section' => $control['section'], ); if ( isset( $control['description'] ) ) { $control_args['description'] = $control['description']; } if ( isset( $control['input_attrs'] ) ) { $control_args['input_attrs'] = $control['input_attrs']; } if ( isset( $control['choices'] ) ) { $control_args['choices'] = $control['choices']; } $wp_customize->add_control( new $control_class( $wp_customize, $control['setting'], $control_args ) ); } } /** * Register Buttons mobile controls */ public function tmpcoder_buttons_mobile_controls( $wp_customize ) { // Define common settings and controls dynamically in an array $controls = array( array( 'control' => 'Tmpcoder_Notice_Customize_Control', 'setting' => 'button_style_mobile_options_title', 'default' => '', 'sanitize' => 'tmpcoder_text_sanitization', 'label' => esc_html__( 'Button Style', 'spexo' ), 'section' => 'buttons_mobile', 'transport' => 'postMessage', ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_mobile_font-size", 'default' => 36, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Font Size (px)", 'spexo' ), 'section' => 'buttons_mobile', 'input_attrs' => array( 'min' => 16, 'max' => 90, 'step' => 1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_mobile_line-height", 'default' => 1.5, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Line Height", 'spexo' ), 'section' => 'buttons_mobile', 'input_attrs' => array( 'min' => 1, 'max' => 4, 'step' => 0.1, ), ), array( 'control' => 'Tmpcoder_Slider_Customize_Control', 'setting' => "button_style_mobile_letter-spacing", 'default' => 0, 'sanitize' => 'tmpcoder_range_sanitization', 'label' => esc_html__( "Letter Spacing (px)", 'spexo' ), 'section' => 'buttons_mobile', 'input_attrs' => array( 'min' => 0, 'max' => 4, 'step' => 0.1, ), ), // Button padding mobile control array( 'control' => 'Tmpcoder_Divider_Customize_Control', 'setting' => "button_padding_mobile_divider", 'default' => '', 'sanitize' => '', 'label' => '', 'section' => 'buttons_mobile', 'input_attrs' => array( 'width' => 'full', 'type' => 'solid', 'margintop' => 20, 'marginbottom' => 30, ), ), array( 'control' => 'Tmpcoder_Dimensional_Customize_Control', 'setting' => "button_padding_mobile", 'default' => json_encode( array( 'top' => 5, 'right' => 10, 'bottom' => 5, 'left' => 10 ) ), 'sanitize' => 'tmpcoder_dimensions_sanitization', 'label' => esc_html__( "Button Padding", 'spexo' ), 'section' => 'buttons_mobile', ), ); // Loop through the controls array and add settings and controls foreach ( $controls as $control ) { $wp_customize->add_setting( $control['setting'], array( 'default' => $control['default'], 'transport' => isset($control['transport']) ? $control['transport'] : 'postMessage', 'sanitize_callback' => $control['sanitize'], ) ); $control_class = $control['control']; $control_args = array( 'label' => $control['label'], 'section' => $control['section'], ); if ( isset( $control['description'] ) ) { $control_args['description'] = $control['description']; } if ( isset( $control['input_attrs'] ) ) { $control_args['input_attrs'] = $control['input_attrs']; } if ( isset( $control['choices'] ) ) { $control_args['choices'] = $control['choices']; } $wp_customize->add_control( new $control_class( $wp_customize, $control['setting'], $control_args ) ); } } /** * Register footer controls */ public function tmpcoder_footer_controls( $wp_customize ) { $wp_customize->add_setting( 'footer_copyright', array( 'default' => wp_kses_post( __( 'Copyright [COPYRIGHT] [CURRENT_YEAR] [SITE_TITLE] | Powered by <a href="https://spexoaddons.com/" target="_blank">Spexo Wordpress Theme</a>', 'spexo' ) ), // 'transport' => 'postMessage', 'transport' => 'refresh', 'sanitize_callback' => 'wp_kses_post' ) ); $wp_customize->add_control( new Tmpcoder_TinyMCE_Customize_Control( $wp_customize, 'footer_copyright', array( 'label' => esc_html__( 'Footer Copyright', 'spexo' ), 'description' => wp_kses_post( __( 'Footer copyright text is shown by default. <a href="https://wordpress.org/plugins/sastra-essential-addons-for-elementor/" target="_blank">Install Spexo Addons</a> to customize it via <a href="https://spexoaddons.com/documentation/custom-footer/" target="_blank">Site Builder > Footer</a>.', 'spexo' ) ), 'section' => 'footer_options', 'input_attrs' => array( 'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link', 'toolbar2' => '', 'mediaButtons' => true, ) ) ) ); } function tmpcoder_site_identify_logo_show_controls( $wp_customize ) { // Add a setting to show or hide the logo $wp_customize->add_setting( 'logo_display', array( 'default' => true, // Default checked 'sanitize_callback' => 'tmpcoder_sanitize_boolean', 'transport' => 'refresh', ) ); // Add the checkbox control $wp_customize->add_control( 'logo_display', array( 'type' => 'checkbox', 'section' => 'title_tagline', // Site Identity section 'label' => __( 'Display Site Logo', 'spexo' ), 'description' => __( 'Show or hide the site logo in the header.', 'spexo' ), ) ); } } /** * Load all Customizer Controls */ get_template_part('inc/admin/customizer/tmpcoder-customizer-controls'); /** * Functions which enhance the cutomizer */ get_template_part('inc/admin/customizer/tmpcoder-customizer-functions'); /** * Initialise Customizer settings */ $tmpcoder_settings = new Tmpcoder_initialise_customizer_settings();