add_panel('ample_header', array( 'title' => __('Header', 'ample'), 'capabitity' => 'edit_theme_options', 'priority' => 300 )); // Header Logo upload option $wp_customize->add_section('ample_header_logo', array( 'title' => __( 'Header Logo', 'ample' ), 'priority' => 10, 'panel' => 'ample_header' )); $wp_customize->add_setting('ample[ample_header_logo_image]', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_url', 'sanitize_js_callback' => 'ample_sanitize_js_url' )); $wp_customize->add_control( new WP_Customize_Image_Control($wp_customize, 'ample[ample_header_logo_image]', array( 'label' => __( 'Upload logo for your header.', 'ample' ), 'section' => 'ample_header_logo', 'settings' => 'ample[ample_header_logo_image]' )) ); // Header logo and text display type option $wp_customize->add_section('ample_header_logo_text', array( 'title' => __( 'Show', 'ample' ), 'priority' => 20, 'panel' => 'ample_header' )); $wp_customize->add_setting('ample[ample_show_header_logo_text]', array( 'default' => 'text_only', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_radio_sanitize' )); $wp_customize->add_control('ample[ample_show_header_logo_text]', array( 'type' => 'radio', 'label' => __('Choose the option that you want.', 'ample'), 'section' => 'ample_header_logo_text', 'choices' => array( 'logo_only' => __( 'Header Logo Only', 'ample' ), 'text_only' => __( 'Header Text Only', 'ample' ), 'both' => __( 'Show Both', 'ample' ), 'none' => __( 'Disable', 'ample' ) ) )); // Header Title Bar Background Image upload option $wp_customize->add_section('ample_header_title_bar', array( 'title' => __( 'Header Title Bar Background Image', 'ample' ), 'priority' => 30, 'panel' => 'ample_header' )); $wp_customize->add_setting('ample[ample_header_title_background_image]', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_url', 'sanitize_js_callback' => 'ample_sanitize_js_url' )); $wp_customize->add_control( new WP_Customize_Image_Control($wp_customize, 'ample[ample_header_title_background_image]', array( 'label' => __( 'Upload Background Image for Header Title Bar.', 'ample' ), 'section' => 'ample_header_title_bar', 'settings' => 'ample[ample_header_title_background_image]' )) ); // Header Title Bar Background color option $wp_customize->add_setting('ample[ample_title_bar_background_color]', array( 'default' => '#80abc8', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_hex_color', 'sanitize_js_callback' => 'ample_sanitize_escaping' )); $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'ample[ample_title_bar_background_color]', array( 'label' => __( 'Choose Background Color for Header Title Bar', 'ample' ), 'section' => 'ample_header_title_bar', 'settings' => 'ample[ample_title_bar_background_color]' )) ); // Header Title Bar Text color option $wp_customize->add_setting('ample[ample_header_title_color]', array( 'default' => '#ffffff', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_hex_color', 'sanitize_js_callback' => 'ample_sanitize_escaping' )); $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'ample[ample_header_title_color]', array( 'label' => __( 'Choose Text Color for Header Title Bar', 'ample' ), 'section' => 'ample_header_title_bar', 'settings' => 'ample[ample_header_title_color]' )) ); // Header Image Position $wp_customize->add_section('ample_header_image_position_setting', array( 'title' => __( 'Header Image Position', 'ample' ), 'priority' => 40, 'panel' => 'ample_header' )); $wp_customize->add_setting('ample[ample_header_image_position]', array( 'default' => 'above', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_radio_sanitize' )); $wp_customize->add_control('ample[ample_header_image_position]', array( 'type' => 'radio', 'label' => __('Choose top header image display position.', 'ample'), 'section' => 'ample_header_image_position_setting', 'choices' => array( 'above' => __( 'Position Above (Default): Display the Header image just above the site title and main menu part.', 'ample' ), 'below' => __( 'Position Below: Display the Header image just below the site title and main menu part.', 'ample' ) ) )); // End of the Header Options /**************************************************************************************/ // Design Options Area $wp_customize->add_panel('ample_design_options', array( 'title' => __('Design', 'ample'), 'capabitity' => 'edit_theme_options', 'priority' => 310 )); // Site Layout $wp_customize->add_section('ample_site_layout_setting', array( 'title' => __( 'Site Layout', 'ample' ), 'priority' => 10, 'panel' => 'ample_design_options' )); $wp_customize->add_setting('ample[ample_site_layout]', array( 'default' => 'wide', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_radio_sanitize' )); $wp_customize->add_control('ample[ample_site_layout]', array( 'type' => 'radio', 'label' => __('Choose your site layout. The change is reflected in whole site.', 'ample'), 'section' => 'ample_site_layout_setting', 'choices' => array( 'wide' => __( 'Wide layout', 'ample' ), 'box' => __( 'Boxed layout', 'ample' ) ) )); // Radio Image Custom Control class AMPLE_Image_Radio_Control extends WP_Customize_Control { public function render_content() { if ( empty( $this->choices ) ) return; $name = '_customize-radio-' . $this->id; ?> label ); ?> add_section('ample_default_layout_setting', array( 'title' => __( 'Default layout', 'ample' ), 'priority' => 20, 'panel' => 'ample_design_options' )); $wp_customize->add_setting('ample[ample_default_layout]', array( 'default' => 'right_sidebar', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_radio_sanitize' )); $wp_customize->add_control( new AMPLE_Image_Radio_Control($wp_customize, 'ample[ample_default_layout]', array( 'type' => 'radio', 'label' => __('Select default layout. This layout will be reflected in whole site archives, search etc. The layout for a single post and page can be controlled from below options.', 'ample'), 'section' => 'ample_default_layout_setting', 'choices' => array( 'right_sidebar' => get_template_directory_uri() . '/inc/admin/images/right-sidebar.png', 'left_sidebar' => get_template_directory_uri() . '/inc/admin/images/left-sidebar.png', 'no_sidebar_full_width' => get_template_directory_uri() . '/inc/admin/images/no-sidebar-full-width-layout.png', 'no_sidebar_content_centered' => get_template_directory_uri() . '/inc/admin/images/no-sidebar-content-centered-layout.png', 'both_sidebar' => get_template_directory_uri() . '/inc/admin/images/both-sidebar.png' ) )) ); // Default layout for pages only $wp_customize->add_section('ample_pages_default_layout_setting', array( 'title' => __( 'Default layout for pages only', 'ample' ), 'priority' => 30, 'panel' => 'ample_design_options' )); $wp_customize->add_setting('ample[ample_pages_default_layout]', array( 'default' => 'right_sidebar', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_radio_sanitize' )); $wp_customize->add_control( new AMPLE_Image_Radio_Control($wp_customize, 'ample[ample_pages_default_layout]', array( 'type' => 'radio', 'label' => __('Select default layout for pages. This layout will be reflected in all pages unless unique layout is set for specific page.', 'ample'), 'section' => 'ample_pages_default_layout_setting', 'choices' => array( 'right_sidebar' => get_template_directory_uri() . '/inc/admin/images/right-sidebar.png', 'left_sidebar' => get_template_directory_uri() . '/inc/admin/images/left-sidebar.png', 'no_sidebar_full_width' => get_template_directory_uri() . '/inc/admin/images/no-sidebar-full-width-layout.png', 'no_sidebar_content_centered' => get_template_directory_uri() . '/inc/admin/images/no-sidebar-content-centered-layout.png', 'both_sidebar' => get_template_directory_uri() . '/inc/admin/images/both-sidebar.png' ) )) ); // Default layout for single posts only $wp_customize->add_section('ample_single_posts_default_layout_setting', array( 'title' => __( 'Default layout for single posts only', 'ample' ), 'priority' => 40, 'panel' => 'ample_design_options' )); $wp_customize->add_setting('ample[ample_single_posts_default_layout]', array( 'default' => 'right_sidebar', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_radio_sanitize' )); $wp_customize->add_control( new AMPLE_Image_Radio_Control($wp_customize, 'ample[ample_single_posts_default_layout]', array( 'type' => 'radio', 'label' => __('Select default layout for single posts. This layout will be reflected in all single posts unless unique layout is set for specific post.', 'ample'), 'section' => 'ample_single_posts_default_layout_setting', 'choices' => array( 'right_sidebar' => get_template_directory_uri() . '/inc/admin/images/right-sidebar.png', 'left_sidebar' => get_template_directory_uri() . '/inc/admin/images/left-sidebar.png', 'no_sidebar_full_width' => get_template_directory_uri() . '/inc/admin/images/no-sidebar-full-width-layout.png', 'no_sidebar_content_centered' => get_template_directory_uri() . '/inc/admin/images/no-sidebar-content-centered-layout.png', 'both_sidebar' => get_template_directory_uri() . '/inc/admin/images/both-sidebar.png' ) )) ); // Site primary color option $wp_customize->add_section('ample_primary_color_setting', array( 'panel' => 'ample_design_options', 'priority' => 50, 'title' => __('Primary color option', 'ample') )); $wp_customize->add_setting('ample[ample_primary_color]', array( 'default' => '#80abc8', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_hex_color', 'sanitize_js_callback' => 'ample_sanitize_escaping' )); $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'ample[ample_primary_color]', array( 'label' => __('This will reflect in links, buttons and many others. Choose a color to match your site.', 'ample'), 'section' => 'ample_primary_color_setting', 'settings' => 'ample[ample_primary_color]' )) ); // Custom CSS setting class AMPLE_Custom_CSS_Control extends WP_Customize_Control { public $type = 'custom_css'; public function render_content() { ?> add_section('ample_custom_css_setting', array( 'priority' => 60, 'title' => __('Custom CSS', 'ample'), 'panel' => 'ample_design_options' )); $wp_customize->add_setting('ample[ample_custom_css]', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'wp_filter_nohtml_kses', 'sanitize_js_callback' => 'wp_filter_nohtml_kses' )); $wp_customize->add_control( new AMPLE_Custom_CSS_Control($wp_customize, 'ample[ample_custom_css]', array( 'label' => __('Write your custom css.', 'ample'), 'section' => 'ample_custom_css_setting', 'settings' => 'ample[ample_custom_css]' )) ); // End of the Design Options /**************************************************************************************/ /* Slider Options Area */ $wp_customize->add_panel('ample_slider_options', array( 'capabitity' => 'edit_theme_options', 'priority' => 320, 'title' => __('Slider', 'ample'), )); // Slider activate option $wp_customize->add_section('ample_activate_slider_setting', array( 'title' => __( 'Activate slider', 'ample' ), 'priority' => 10, 'panel' => 'ample_slider_options' )); $wp_customize->add_setting('ample[ample_activate_slider]', array( 'default' => 0, 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_checkbox' )); $wp_customize->add_control('ample[ample_activate_slider]', array( 'type' => 'checkbox', 'label' => __('Check to activate slider.', 'ample' ), 'section' => 'ample_activate_slider_setting' )); // Slide options for( $i=1; $i<=4; $i++) { // Slider Image upload $wp_customize->add_section('ample_slider_image_setting'.$i, array( 'title' => sprintf( __( 'Slider #%1$s', 'ample' ), $i ), 'priority' => $i+50, 'panel' => 'ample_slider_options' )); $wp_customize->add_setting('ample[ample_slider_image'.$i.']', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_url', 'sanitize_js_callback' => 'ample_sanitize_js_url' )); $wp_customize->add_control( new WP_Customize_Image_Control($wp_customize, 'ample[ample_slider_image'.$i.']', array( 'label' => __( 'Upload image', 'ample' ), 'section' => 'ample_slider_image_setting'.$i, 'settings' => 'ample[ample_slider_image'.$i.']' )) ); // Slider Title $wp_customize->add_setting('ample[ample_slider_title'.$i.']', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'wp_filter_nohtml_kses' )); $wp_customize->add_control('ample[ample_slider_title'.$i.']', array( 'label' => __( 'Enter title for this slide', 'ample' ), 'section' => 'ample_slider_image_setting'.$i, 'settings' => 'ample[ample_slider_title'.$i.']' )); // Button Text $wp_customize->add_setting('ample[ample_slider_button_text'.$i.']', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'wp_filter_nohtml_kses' )); $wp_customize->add_control('ample[ample_slider_button_text'.$i.']', array( 'label' => __( 'Enter button text', 'ample' ), 'section' => 'ample_slider_image_setting'.$i, 'settings' => 'ample[ample_slider_button_text'.$i.']' )); // Button Link $wp_customize->add_setting('ample[ample_slider_link'.$i.']', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_url', 'sanitize_js_callback' => 'ample_sanitize_js_url' )); $wp_customize->add_control('ample[ample_slider_link'.$i.']', array( 'label' => __( 'Enter link to redirect', 'ample' ), 'section' => 'ample_slider_image_setting'.$i, 'settings' => 'ample[ample_slider_link'.$i.']' )); } // End of the Slider Options /**************************************************************************************/ /* Additional Options Area */ $wp_customize->add_panel('ample_additional_options', array( 'capabitity' => 'edit_theme_options', 'priority' => 330, 'title' => __('Additional', 'ample') )); // Favicon Activate Option $wp_customize->add_section('ample_favicon_setting', array( 'title' => __( 'Favicon', 'ample' ), 'priority' => 10, 'panel' => 'ample_additional_options' )); $wp_customize->add_setting('ample[ample_activate_favicon]', array( 'default' => 0, 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_checkbox' )); $wp_customize->add_control('ample[ample_activate_favicon]', array( 'type' => 'checkbox', 'label' => __('Check to activate favicon. Upload fav icon from below option', 'ample' ), 'section' => 'ample_favicon_setting' )); // Fav icon upload option $wp_customize->add_setting('ample[ample_favicon]', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_sanitize_url', 'sanitize_js_callback' => 'ample_sanitize_js_url' )); $wp_customize->add_control( new WP_Customize_Image_Control($wp_customize, 'ample[ample_favicon]', array( 'label' => __( 'Upload favicon for your site.', 'ample' ), 'section' => 'ample_favicon_setting', 'settings' => 'ample[ample_favicon]' )) ); // Multicheck Custom Control class AMPLE_Controls_MultiCheck_Control extends WP_Customize_Control { public $type = 'multicheck'; public function render_content() { ?> choices ) ) { return; } if ( ! empty( $this->label ) ) : ?> label ); ?> description ) ) : ?> description; ?> value() ) ) ? explode( ',', $this->value() ) : $this->value(); ?> link(); ?> value="" /> cat_ID] = $category->cat_name; } // Select category to hide from Post Page $wp_customize->add_section('ample_hide_category_setting', array( 'title' => __( 'Category to hide from Blog', 'ample' ), 'priority' => 20, 'panel' => 'ample_additional_options' )); $wp_customize->add_setting('ample[ample_hide_category]', array( 'default' => '', 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'wp_filter_nohtml_kses' )); $wp_customize->add_control( new AMPLE_Controls_MultiCheck_Control($wp_customize, 'ample[ample_hide_category]', array( 'label' => __('Select a Category or Categories to hide its posts from Blog page.', 'ample' ), 'section' => 'ample_hide_category_setting', 'setting' => 'ample[ample_hide_category]', 'choices' => $options_categories )) ); // End of the Additional Options /**************************************************************************************/ // Theme important links started class AMPLE_Important_Links extends WP_Customize_Control { public $type = "ample-important-links"; public function render_content() { //Add Theme instruction, Support Forum, Demo Link, Rating Link $important_links = array( 'upgrade' => array( 'link' => esc_url('http://themegrill.com/themes/ample-pro/'), 'text' => __('Upgrade to Pro', 'ample'), ), 'support' => array( 'link' => esc_url('http://themegrill.com/support-forum/'), 'text' => __('Free Support', 'ample'), ), 'documentation' => array( 'link' => esc_url('http://themegrill.com/theme-instruction/ample/'), 'text' => __('Documentation', 'ample'), ), 'demo' => array( 'link' => esc_url('http://demo.themegrill.com/ample/'), 'text' => __('View Demo', 'ample'), ) ); foreach ($important_links as $important_link) { echo '

' . esc_attr($important_link['text']) . '

'; } ?> add_section('ample_important_links', array( 'priority' => 700, 'title' => __('About Ample', 'ample'), )); /** * This setting has the dummy Sanitization function as it contains no value to be sanitized */ $wp_customize->add_setting('ample[ample_important_links]', array( 'capability' => 'edit_theme_options', 'type' => 'option', 'sanitize_callback' => 'ample_links_sanitize' )); $wp_customize->add_control(new AMPLE_Important_Links($wp_customize, 'important_links', array( 'label' => __('If you like our work. Buy us a beer.', 'ample'), 'section' => 'ample_important_links', 'settings' => 'ample[ample_important_links]' ))); // Theme Important Links Ended /**************************************************************************************/ // Checkbox sanitization function ample_sanitize_checkbox($input) { if ( $input == 1 ) { return 1; } else { return ''; } } // URL sanitization function ample_sanitize_url( $input ) { $input = esc_url_raw( $input ); return $input; } function ample_sanitize_js_url ( $input ) { $input = esc_url( $input ); return $input; } // Color sanitization function ample_sanitize_hex_color($color) { if ($unhashed = sanitize_hex_color_no_hash($color)) return '#' . $unhashed; return $color; } function ample_sanitize_escaping($input) { $input = esc_attr($input); return $input; } // Radio/Select sanitization function ample_radio_sanitize( $input, $setting ) { // Ensure input is a slug. $input = sanitize_key( $input ); // Get list of choices from the control associated with the setting. $choices = $setting->manager->get_control( $setting->id )->choices; // If the input is a valid key, return it; otherwise, return the default. return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); } // Sanitization of links function ample_links_sanitize() { return false; } } add_action('customize_register', 'ample_customize_register'); /*****************************************************************************************/ /** * Enqueue scripts for customizer */ function ample_customizer_js() { wp_enqueue_script( 'ample_customizer_script', get_template_directory_uri() . '/js/ample_customizer.js', array("jquery"), 'false', true ); wp_localize_script( 'ample_customizer_script', 'ample_customizer_obj', array( 'info' => __( 'Theme Info', 'ample' ), 'pro' => __('View PRO version','ample') ) ); } add_action( 'customize_controls_enqueue_scripts', 'ample_customizer_js' );