get_setting( 'blogdescription' )->transport = 'postMessage';
$wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
if ( isset( $wp_customize->selective_refresh ) ) {
$wp_customize->selective_refresh->add_partial( 'blogname', array(
'selector' => '.site-header .site-branding .site-title a',
'render_callback' => 'kaira_customize_partial_blogname',
) );
$wp_customize->selective_refresh->add_partial( 'blogdescription', array(
'selector' => '.site-description',
'render_callback' => 'kaira_customize_partial_blogdescription',
) );
}
/**
* Main Panel for Customization
*/
$wp_customize->add_panel(
'kaira_main_panel',
array(
'title' => esc_html__('Theme Options', 'kaira'),
'priority' => 70
)
);
//Remove header image control
$wp_customize->remove_control('header_image');
/*
* Slider Controls
*/
$wp_customize->add_section( 'kaira_slider', array(
'title' => esc_html__( 'Slider', 'kaira' ),
'priority' => 201,
'panel' => 'kaira_main_panel'
) );
//Checkbox
$wp_customize->add_setting( 'kaira_slider_settings', array(
'default' => 0,
'sanitize_callback' => 'kaira_sanitize_checkbox',
) );
$wp_customize->add_control( 'kaira_slider_settings_control', array(
'label' => esc_html__( 'Display Slider at the Front Page.', 'kaira' ),
'section' => 'kaira_slider',
'settings' => 'kaira_slider_settings',
'type' => 'checkbox',
) );
//Tag selection
$wp_customize->add_setting( 'kaira_slider_tag', array(
'default' => ' ',
'sanitize_callback' => 'kaira_sanitize_terms',
) );
$wp_customize->add_control( 'kaira_slider_tag', array(
'label' => esc_html__( 'Select Tag For Slider Posts', 'kaira' ),
'description' => esc_html__( 'Latest 6 posts from the selected tag will be shown in slider.', 'kaira' ),
'section' => 'kaira_slider',
'type' => 'select',
'choices' => kaira_get_terms(),
) );
/**
* Pagination Controls
*/
$wp_customize->add_section( 'kaira_pagination_custom', array(
'title' => esc_html__( 'Pagination Type', 'kaira' ),
'priority' => 199,
'panel' => 'kaira_main_panel'
) );
$wp_customize->add_setting( 'kaira_pagination_type', array(
'capability' => 'edit_theme_options',
'default' => 'numbered',
'sanitize_callback' => 'kaira_sanitize_select'
) );
$wp_customize->add_control( 'kaira_pagination_type', array(
'label' => esc_html__( 'Custom Pagination Selection', 'kaira' ),
'section' => 'kaira_pagination_custom',
'description' => esc_html__( 'Select the type of pagination', 'kaira' ),
'type' => 'radio',
'choices' => array(
'numbered' => __( 'Numbered (1,2,3...)', 'kaira'),
'defaulted' => __( 'Default (Previous/Next)', 'kaira'),
),
) );
/**
* Featured Post
*/
$wp_customize->add_section( 'kaira_front_page', array(
'title' => esc_html__( 'Featured Content Blocks', 'kaira' ),
'panel' => 'kaira_main_panel',
'priority' => 200,
) );
//Checkbox
$wp_customize->add_setting( 'kaira_front_featured_posts', array(
'default' => 0,
'sanitize_callback' => 'kaira_sanitize_checkbox',
) );
$wp_customize->add_control( 'kaira_front_control', array(
'label' => esc_html__( 'Display Featured Posts at the top of the Front Page.', 'kaira' ),
'section' => 'kaira_front_page',
'settings' => 'kaira_front_featured_posts',
'type' => 'checkbox',
) );
//Label
$wp_customize->add_setting( 'kaira_front_featured_posts_label', array(
'transport' => 'postMessage',
'sanitize_callback' => 'sanitize_text_field',
) );
$wp_customize->add_control( 'kaira_front_featured_posts_label', array(
'label' => esc_html__( 'Section Title', 'kaira' ),
'section' => 'kaira_front_page',
'type' => 'text',
) );
//Tag Selection
$wp_customize->add_setting( 'kaira_featured_term_1', array(
'default' => ' ',
'sanitize_callback' => 'kaira_sanitize_terms',
) );
$wp_customize->add_control( 'kaira_featured_term_1', array(
'label' => esc_html__( 'Select the tag for feature post', 'kaira' ),
'description' => esc_html__( 'Latest 6 posts from the selected tag will be shown in featured section.', 'kaira' ),
'section' => 'kaira_front_page',
'default' => ' ',
'type' => 'select',
'choices' => kaira_get_terms(),
) );
/**
* Related Post customizer
*/
$wp_customize->add_section( 'kaira_relation_post', array(
'title' => esc_html__( 'Related Content Blocks', 'kaira' ),
'panel' => 'kaira_main_panel',
'priority' => 200,
) );
//Checkbox
$wp_customize->add_setting( 'kaira_related_posts', array(
'default' => 0,
'sanitize_callback' => 'kaira_sanitize_checkbox',
) );
$wp_customize->add_control( 'kaira_related_posts_control', array(
'label' => esc_html__( 'Display Related Posts in single post page.', 'kaira' ),
'section' => 'kaira_relation_post',
'settings' => 'kaira_related_posts',
'type' => 'checkbox',
) );
//Label
$wp_customize->add_setting( 'kaira_related_posts_label', array(
'sanitize_callback' => 'sanitize_text_field',
) );
$wp_customize->add_control( 'kaira_related_posts_label', array(
'label' => esc_html__( 'Section Title', 'kaira' ),
'section' => 'kaira_relation_post',
'description' => esc_html__( 'Latest 6 posts belonging to the category of current post will be shown in related section.', 'kaira' ),
'type' => 'text',
) );
/**
* Custom Colors
*/
//Navigarion Color
$wp_customize->add_setting( 'kaira_nav_link_color', array(
'default' => '#373737',
'transport' => 'postMessage',
'sanitize_callback' => 'sanitize_hex_color',
) );
$wp_customize->add_control( new WP_Customize_Color_Control(
$wp_customize, 'kaira_nav_link_control',
array(
'label' => esc_html__( 'Navigation Link Color', 'kaira' ),
'section' => 'colors',
'default' => '#373737',
'settings' => 'kaira_nav_link_color'
) ) );
//Link Colors
$wp_customize->add_setting( 'kaira_category_link_color', array(
'default' => '#BD15CF',
'transport' => 'postMessage',
'sanitize_callback' => 'sanitize_hex_color',
) );
$wp_customize->add_control( new WP_Customize_Color_Control(
$wp_customize, 'kaira_category_link_control',
array(
'label' => esc_html__( 'Category Link Color', 'kaira' ),
'section' => 'colors',
'settings' => 'kaira_category_link_color'
) ) );
//Button Colors
$wp_customize->add_setting( 'kaira_button_color', array(
'default' => '#0F89DB',
'transport' => 'postMessage',
'sanitize_callback' => 'sanitize_hex_color',
) );
$wp_customize->add_control( new WP_Customize_Color_Control(
$wp_customize, 'kaira_button_color_control',
array(
'label' => esc_html__( 'Button Color', 'kaira' ),
'section' => 'colors',
'settings' => 'kaira_button_color'
) ) );
//Header Color
$wp_customize->add_setting( 'kaira_header_color', array(
'default' => '#ffffff',
'sanitize_callback' => 'sanitize_hex_color',
) );
$wp_customize->add_control( new WP_Customize_Color_Control(
$wp_customize, 'kaira_header_color_control',
array(
'label' => esc_html__( 'Header Color', 'kaira' ),
'section' => 'colors',
'settings' => 'kaira_header_color'
) ) );
function kaira_sanitize_select( $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 );
}
/**
* Custom Font Selection
*/
//Header Typography
$wp_customize->add_section(
'kaira_custom_typography',
array(
'title' => esc_html__('Custom Fonts', 'kaira'),
'panel' => 'kaira_main_panel'
)
);
$wp_customize->add_setting(
'kaira_header_font_setting',
array(
'capability' => 'edit_theme_options',
'default' => 'source_sans_pro',
'transport' => 'refresh',
'sanitize_callback' => 'kaira_sanitize_font',
)
);
$wp_customize->add_control(
'kaira_header_font_control',
array(
'type' => 'select',
'choices' => array(
'lato' => 'Lato',
'ubuntu' => 'Ubuntu',
'source_sans_pro' => 'Source Sans Pro',
'roboto' => 'Roboto',
'open-sans' => 'Open Sans'
),
'default' => 'source_sans_pro',
'section' => 'kaira_custom_typography', // Add a default or your own section
'settings' => 'kaira_header_font_setting',
'label' => __( 'Headings', 'kaira' ),
'description' => __( 'This dropdown enables to change the font of all the headings in the site.', 'kaira'),
)
);
$wp_customize->add_setting(
'kaira_body_font_setting',
array(
'capability' => 'edit_theme_options',
'default' => 'open-sans',
'transport' => 'refresh',
'sanitize_callback' => 'kaira_sanitize_font',
)
);
$wp_customize->add_control(
'kaira_body_font_control',
array(
'type' => 'select',
'choices' => array(
'lato' => 'Lato',
'ubuntu' => 'Ubuntu',
'source_sans_pro' => 'Source Sans Pro',
'roboto' => 'Roboto',
'open-sans' => 'Open Sans'
),
'default' => 'open-sans',
'section' => 'kaira_custom_typography', // Add a default or your own section
'settings' => 'kaira_body_font_setting',
'label' => __( 'Body Text', 'kaira' ),
'description' => __( 'This dropdown enables to change the font of the body texts.', 'kaira'),
)
);
}
add_action( 'customize_register', 'kaira_customize_register' );
/**
* Sanitization for tags and slugs
*/
if ( ! function_exists( 'kaira_get_terms' ) ) :
/**
* Return an array of tag names and slugs
*/
function kaira_get_terms() {
$choices = array( 0 );
// Default
$choices = array( ' ' => esc_html__( 'Select a tag', 'kaira' ) );
// Post Tags
$type_terms = get_terms( 'post_tag' );
if ( ! empty( $type_terms ) ) {
$type_slugs = wp_list_pluck( $type_terms, 'slug' );
$type_names = wp_list_pluck( $type_terms, 'name' );
$type_list = array_combine( $type_slugs, $type_names );
$choices = $choices + $type_list;
}
return apply_filters( 'kaira_get_terms', $choices );
}
endif;
/**
* Return an array of category names and slugs
*/
if ( ! function_exists( 'kaira_get_category_terms' ) ) :
function kaira_get_category_terms() {
$choices = array( 0 );
// Default
$choices = array( ' ' => esc_html__( 'Select a Category', 'kaira' ) );
// Category
$type_terms = get_terms( 'category' );
if ( ! empty( $type_terms ) ) {
$type_slugs = wp_list_pluck( $type_terms, 'slug' );
$type_names = wp_list_pluck( $type_terms, 'name' );
$type_list = array_combine( $type_slugs, $type_names );
$choices = $choices + $type_list;
}
return apply_filters( 'kaira_get_category_terms', $choices );
}
endif;
/**
* Sanitization for tags
*/
if ( ! function_exists( 'kaira_sanitize_terms' ) ) :
/**
* Sanitize a value from a list of allowed values.
*
* @since 1.0.0.
*
* @param mixed $value The value to sanitize.
* @return mixed The sanitized value.
*/
function kaira_sanitize_terms( $value ) {
$choices = kaira_get_terms();
$valid = array_keys( $choices );
if ( ! in_array( $value, $valid ) ) {
$value = 'none';
}
return $value;
}
endif;
/**
* Sanitization for categories
*/
if ( ! function_exists( 'kaira_sanitize_category_terms' ) ) :
/**
* Sanitize a value from a list of allowed values.
*
* @since 1.0.0.
*
* @param mixed $value The value to sanitize.
* @return mixed The sanitized value.
*/
function kaira_sanitize_category_terms( $value ) {
$choices = kaira_get_category_terms();
$valid = array_keys( $choices );
if ( ! in_array( $value, $valid ) ) {
$value = 'none';
}
return $value;
}
endif;
/**
* Sanitization for fonts
*/
function kaira_sanitize_font( $value ) {
$choices = array(
'lato' => 'Lato',
'ubuntu' => 'Ubuntu',
'source_sans_pro' => 'Source Sans Pro',
'roboto' => 'Roboto',
'open-sans' => 'Open Sans'
);
$valid = array_keys( $choices );
if( ! in_array( $value, $valid) ) {
$value = 'open-sans';
}
return $value;
}
/* Sanitization Functions
*
* @link https://github.com/WPTRT/code-examples/blob/master/customizer/sanitization-callbacks.php
*/
function kaira_sanitize_checkbox( $checked ){
// Boolean check.
return ( ( isset( $checked ) && true == $checked ) ? true : false );
}
/**
* Render the site title for the selective refresh partial.
*
* @return void
*/
function kaira_customize_partial_blogname() {
bloginfo( 'name' );
}
/**
* Render the site tagline for the selective refresh partial.
*
* @return void
*/
function kaira_customize_partial_blogdescription() {
bloginfo( 'description' );
}
/**
* Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
*/
function kaira_customize_preview_js() {
wp_enqueue_script( 'kaira_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20151215', true );
}
add_action( 'customize_preview_init', 'kaira_customize_preview_js' );
//Custom Bg callback
function change_custom_background_cb() {
$background = get_background_image();
$color = get_background_color();
if ( ! $background && ! $color )
return;
if( ! $background && $color) {
$style = " background-color: #".$color;
}
if ( $background ) {
$image = " background-image: url('$background');";
$repeat = get_theme_mod( 'background_repeat', 'repeat' );
if ( ! in_array( $repeat, array( 'no-repeat', 'repeat-x', 'repeat-y', 'repeat' ) ) )
$repeat = 'repeat';
$repeat = " background-repeat: $repeat;";
$position = get_theme_mod( 'background_position_x', 'left' );
if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) )
$position = 'left';
$position = " background-position: top $position;";
$attachment = get_theme_mod( 'background_attachment', 'scroll' );
if ( ! in_array( $attachment, array( 'fixed', 'scroll' ) ) )
$attachment = 'scroll';
$attachment = " background-attachment: $attachment;";
$style = $image . $repeat . $position . $attachment;
}
?>
'',
'default-text-color' => '000000',
'width' => 1000,
'height' => 250,
'flex-height' => true,
'wp-head-callback' => 'kaira_header_style',
) ) );
}
add_action( 'after_setup_theme', 'kaira_custom_header_setup' );
if ( ! function_exists( 'kaira_header_style' ) ) :
/**
* Styles the header image and text displayed on the blog.
*
* @see kaira_custom_header_setup().
*/
function kaira_header_style() {
$header_text_color = get_header_textcolor();
/*
* If no custom options for text are set, let's bail.
* get_header_textcolor() options: Any hex value, 'blank' to hide text. Default: add_theme_support( 'custom-header' ).
*/
if ( get_theme_support( 'custom-header', 'default-text-color' ) === $header_text_color ) {
return;
}
// If we get this far, we have custom styles. Let's do this.
?>