theme_fields = $fields; add_action ('customize_register' , array( &$this, 'customize_panel' ) ); add_action ('customize_controls_enqueue_scripts' , array( &$this, 'customize_scripts' ) ); } public function customize_scripts() { wp_enqueue_style ( 'diarjolite_panel', get_template_directory_uri() . '/core/admin/assets/css/customize.css', array(), '' ); wp_enqueue_script( 'customizer-preview', get_template_directory_uri().'/core/admin/assets/js/customizer-preview.js', array( 'jquery' ), '1.0.0', true ); $diarjolite_details = array( 'label' => __( 'Upgrade to Diarjo Premium', 'diarjo-lite' ), 'url' => esc_url('https://www.themeinprogress.com/diarjo-free-creative-minimal-wordpress-theme/') ); wp_localize_script( 'customizer-preview', 'diarjolite_details', $diarjolite_details ); } public function customize_panel ( $wp_customize ) { $theme_panel = $this->theme_fields ; foreach ( $theme_panel as $element ) { switch ( $element['type'] ) { case 'panel' : $wp_customize->add_panel( $element['id'], array( 'title' => $element['title'], 'priority' => $element['priority'], 'description' => $element['description'], 'capability' => 'edit_theme_options', ) ); break; case 'section' : $wp_customize->add_section( $element['id'], array( 'title' => $element['title'], 'panel' => $element['panel'], 'priority' => $element['priority'], 'capability' => 'edit_theme_options', ) ); break; case 'text' : $wp_customize->add_setting( $element['id'], array( 'sanitize_callback' => 'sanitize_text_field', 'default' => $element['std'], 'capability' => 'edit_theme_options', ) ); $wp_customize->add_control( $element['id'] , array( 'type' => $element['type'], 'section' => $element['section'], 'label' => $element['label'], 'description' => $element['description'], ) ); break; case 'upload' : $wp_customize->add_setting( $element['id'], array( 'default' => $element['std'], 'capability' => 'edit_theme_options', 'sanitize_callback' => 'esc_url_raw' ) ); $wp_customize->add_control( new WP_Customize_Image_Control($wp_customize, $element['id'], array( 'label' => $element['label'], 'description' => $element['description'], 'section' => $element['section'], 'settings' => $element['id'], ))); break; case 'url' : $wp_customize->add_setting( $element['id'], array( 'sanitize_callback' => 'esc_url_raw', 'default' => $element['std'], 'capability' => 'edit_theme_options', ) ); $wp_customize->add_control( $element['id'] , array( 'type' => $element['type'], 'section' => $element['section'], 'label' => $element['label'], 'description' => $element['description'], ) ); break; case 'button' : $wp_customize->add_setting( $element['id'], array( 'sanitize_callback' => array( &$this, 'customize_button_sanize' ), 'default' => $element['std'], 'capability' => 'edit_theme_options', ) ); $wp_customize->add_control( $element['id'] , array( 'type' => 'url', 'section' => $element['section'], 'label' => $element['label'], 'description' => $element['description'], ) ); break; case 'textarea' : $wp_customize->add_setting( $element['id'], array( 'sanitize_callback' => 'esc_textarea', 'default' => $element['std'], 'capability' => 'edit_theme_options', ) ); $wp_customize->add_control( $element['id'] , array( 'type' => $element['type'], 'section' => $element['section'], 'label' => $element['label'], 'description' => $element['description'], ) ); break; case 'custom_css' : $wp_customize->add_setting( $element['id'], array( 'default' => $element['std'], 'sanitize_callback' => 'wp_filter_nohtml_kses', 'sanitize_js_callback' => 'wp_filter_nohtml_kses', 'capability' => 'edit_theme_options', ) ); $wp_customize->add_control( $element['id'] , array( 'type' => 'textarea', 'section' => $element['section'], 'label' => $element['label'], 'description' => $element['description'], ) ); break; case 'select' : $wp_customize->add_setting( $element['id'], array( 'sanitize_callback' => array( &$this, 'customize_select_sanize' ), 'default' => $element['std'], 'capability' => 'edit_theme_options', ) ); $wp_customize->add_control( $element['id'] , array( 'type' => $element['type'], 'section' => $element['section'], 'label' => $element['label'], 'description' => $element['description'], 'choices' => $element['options'], ) ); break; } } } public function customize_select_sanize ( $value, $setting ) { $theme_panel = $this->theme_fields ; foreach ( $theme_panel as $element ) { if ( $element['id'] == $setting->id ) : if ( array_key_exists($value, $element['options'] ) ) : return $value; endif; endif; } } public function customize_button_sanize ( $value, $setting ) { $sanize = array ( 'diarjolite_footer_email_button' => 'mailto:', 'diarjolite_footer_skype_button' => 'skype:', 'diarjolite_footer_whatsapp_button' => 'tel:', ); if (!isset($value) || $value == '' || $value == $sanize[$setting->id]) { return ''; } elseif (!strstr($value, $sanize[$setting->id])) { return $sanize[$setting->id] . $value; } else { return esc_url_raw($value, array('mailto', 'skype', 'tel')); } } } ?>