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' );