get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
//Logo Settings
$wp_customize->add_section( 'title_tagline' , array(
'title' => __( 'Title, Tagline & Logo', 'hanne' ),
'priority' => 30,
) );
$wp_customize->add_setting( 'hanne_logo_resize' , array(
'default' => 100,
'sanitize_callback' => 'hanne_sanitize_positive_number',
) );
$wp_customize->add_control(
'hanne_logo_resize',
array(
'label' => __('Resize & Adjust Logo','hanne'),
'section' => 'title_tagline',
'settings' => 'hanne_logo_resize',
'priority' => 6,
'type' => 'range',
'active_callback' => 'hanne_logo_enabled',
'input_attrs' => array(
'min' => 30,
'max' => 200,
'step' => 5,
),
)
);
function hanne_logo_enabled($control) {
$option = $control->manager->get_setting('custom_logo');
return $option->value() == true;
}
//Replace Header Text Color with, separate colors for Title and Description
//Override hanne_site_titlecolor
$wp_customize->remove_control('display_header_text');
$wp_customize->remove_setting('header_textcolor');
$wp_customize->add_setting('hanne_site_titlecolor', array(
'default' => '#000',
'sanitize_callback' => 'sanitize_hex_color',
));
$wp_customize->add_control(new WP_Customize_Color_Control(
$wp_customize,
'hanne_site_titlecolor', array(
'label' => __('Site Title Color','hanne'),
'section' => 'colors',
'settings' => 'hanne_site_titlecolor',
'type' => 'color'
) )
);
$wp_customize->add_setting('hanne_header_desccolor', array(
'default' => '#000',
'sanitize_callback' => 'sanitize_hex_color',
));
$wp_customize->add_control(new WP_Customize_Color_Control(
$wp_customize,
'hanne_header_desccolor', array(
'label' => __('Site Tagline Color','hanne'),
'section' => 'colors',
'settings' => 'hanne_header_desccolor',
'type' => 'color'
) )
);
//Settings for Header Image
$wp_customize->add_setting( 'hanne_himg_style' , array(
'default' => 'cover',
'sanitize_callback' => 'hanne_sanitize_himg_style'
) );
/* Sanitization Function */
function hanne_sanitize_himg_style( $input ) {
if (in_array( $input, array('contain','cover') ) )
return $input;
else
return '';
}
$wp_customize->add_control(
'hanne_himg_style', array(
'label' => __('Header Image Arrangement','hanne'),
'section' => 'header_image',
'settings' => 'hanne_himg_style',
'type' => 'select',
'choices' => array(
'contain' => __('Contain','hanne'),
'cover' => __('Cover Completely (Recommended)','hanne'),
)
) );
$wp_customize->add_setting( 'hanne_himg_align' , array(
'default' => 'center',
'sanitize_callback' => 'hanne_sanitize_himg_align'
) );
/* Sanitization Function */
function hanne_sanitize_himg_align( $input ) {
if (in_array( $input, array('center','left','right') ) )
return $input;
else
return '';
}
$wp_customize->add_control(
'hanne_himg_align', array(
'label' => __('Header Image Alignment','hanne'),
'section' => 'header_image',
'settings' => 'hanne_himg_align',
'type' => 'select',
'choices' => array(
'center' => __('Center','hanne'),
'left' => __('Left','hanne'),
'right' => __('Right','hanne'),
)
) );
$wp_customize->add_setting( 'hanne_himg_repeat' , array(
'default' => true,
'sanitize_callback' => 'hanne_sanitize_checkbox'
) );
$wp_customize->add_control(
'hanne_himg_repeat', array(
'label' => __('Repeat Header Image','hanne'),
'section' => 'header_image',
'settings' => 'hanne_himg_repeat',
'type' => 'checkbox',
) );
//Settings For Logo Area
$wp_customize->add_setting(
'hanne_hide_title_tagline',
array( 'sanitize_callback' => 'hanne_sanitize_checkbox' )
);
$wp_customize->add_control(
'hanne_hide_title_tagline', array(
'settings' => 'hanne_hide_title_tagline',
'label' => __( 'Hide Title and Tagline.', 'hanne' ),
'section' => 'title_tagline',
'type' => 'checkbox',
)
);
$wp_customize->add_setting(
'hanne_branding_below_logo',
array( 'sanitize_callback' => 'hanne_sanitize_checkbox' )
);
$wp_customize->add_control(
'hanne_branding_below_logo', array(
'settings' => 'hanne_branding_below_logo',
'label' => __( 'Display Site Title and Tagline Below the Logo.', 'hanne' ),
'section' => 'title_tagline',
'type' => 'checkbox',
'active_callback' => 'hanne_title_visible'
)
);
function hanne_title_visible( $control ) {
$option = $control->manager->get_setting('hanne_hide_title_tagline');
return $option->value() == false ;
}
//FEATURED POSTS
$wp_customize->add_section(
'hanne_featposts',
array(
'title' => __('Featured Posts','hanne'),
'priority' => 35,
)
);
$wp_customize->add_setting(
'hanne_featposts_enable',
array( 'sanitize_callback' => 'hanne_sanitize_checkbox' )
);
$wp_customize->add_control(
'hanne_featposts_enable', array(
'settings' => 'hanne_featposts_enable',
'label' => __( 'Enable', 'hanne' ),
'section' => 'hanne_featposts',
'type' => 'checkbox',
)
);
$wp_customize->add_setting(
'hanne_featposts_cat',
array( 'sanitize_callback' => 'hanne_sanitize_category' )
);
$wp_customize->add_control(
new Hanne_WP_Customize_Category_Control(
$wp_customize,
'hanne_featposts_cat',
array(
'label' => __('Category For Featured Posts','hanne'),
'settings' => 'hanne_featposts_cat',
'section' => 'hanne_featposts'
)
)
);
// Layout and Design
$wp_customize->add_panel( 'hanne_design_panel', array(
'priority' => 40,
'capability' => 'edit_theme_options',
'theme_supports' => '',
'title' => __('Design & Layout','hanne'),
) );
$wp_customize->add_section(
'hanne_design_options',
array(
'title' => __('Blog Layout','hanne'),
'priority' => 0,
'panel' => 'hanne_design_panel'
)
);
$wp_customize->add_setting(
'hanne_blog_layout',
array( 'sanitize_callback' => 'hanne_sanitize_blog_layout' )
);
function hanne_sanitize_blog_layout( $input ) {
if ( in_array($input, array('grid','grid_2_column','grid_3_column','hanne') ) )
return $input;
else
return '';
}
$wp_customize->add_control(
'hanne_blog_layout',array(
'label' => __('Select Layout','hanne'),
'settings' => 'hanne_blog_layout',
'section' => 'hanne_design_options',
'type' => 'select',
'choices' => array(
'hanne' => __('Hanne Theme Layout','hanne'),
'grid' => __('Basic Blog Layout','hanne'),
'grid_2_column' => __('Grid - 2 Column','hanne'),
'grid_3_column' => __('Grid - 3 Column','hanne'),
)
)
);
$wp_customize->add_section(
'hanne_sidebar_options',
array(
'title' => __('Sidebar Layout','hanne'),
'priority' => 0,
'panel' => 'hanne_design_panel'
)
);
$wp_customize->add_setting(
'hanne_disable_sidebar',
array( 'sanitize_callback' => 'hanne_sanitize_checkbox' )
);
$wp_customize->add_control(
'hanne_disable_sidebar', array(
'settings' => 'hanne_disable_sidebar',
'label' => __( 'Disable Sidebar Everywhere.','hanne' ),
'section' => 'hanne_sidebar_options',
'type' => 'checkbox',
'default' => false
)
);
$wp_customize->add_setting(
'hanne_disable_sidebar_home',
array( 'sanitize_callback' => 'hanne_sanitize_checkbox' )
);
$wp_customize->add_control(
'hanne_disable_sidebar_home', array(
'settings' => 'hanne_disable_sidebar_home',
'label' => __( 'Disable Sidebar on Home/Blog.','hanne' ),
'section' => 'hanne_sidebar_options',
'type' => 'checkbox',
'active_callback' => 'hanne_show_sidebar_options',
'default' => true
)
);
$wp_customize->add_setting(
'hanne_disable_sidebar_front',
array( 'sanitize_callback' => 'hanne_sanitize_checkbox' )
);
$wp_customize->add_control(
'hanne_disable_sidebar_front', array(
'settings' => 'hanne_disable_sidebar_front',
'label' => __( 'Disable Sidebar on Front Page.','hanne' ),
'section' => 'hanne_sidebar_options',
'type' => 'checkbox',
'active_callback' => 'hanne_show_sidebar_options',
'default' => false
)
);
$wp_customize->add_setting(
'hanne_sidebar_width',
array(
'default' => 4,
'sanitize_callback' => 'hanne_sanitize_positive_number' )
);
$wp_customize->add_control(
'hanne_sidebar_width', array(
'settings' => 'hanne_sidebar_width',
'label' => __( 'Sidebar Width','hanne' ),
'description' => __('Min: 25%, Default: 33%, Max: 40%','hanne'),
'section' => 'hanne_sidebar_options',
'type' => 'range',
'active_callback' => 'hanne_show_sidebar_options',
'input_attrs' => array(
'min' => 3,
'max' => 5,
'step' => 1,
'class' => 'sidebar-width-range',
'style' => 'color: #0a0',
),
)
);
/* Active Callback Function */
function hanne_show_sidebar_options($control) {
$option = $control->manager->get_setting('hanne_disable_sidebar');
return $option->value() == false ;
}
class Hanne_Custom_CSS_Control extends WP_Customize_Control {
public $type = 'textarea';
public function render_content() {
?>
add_section(
'hanne_custom_codes',
array(
'title' => __('Custom CSS','hanne'),
'description' => __('Enter your Custom CSS to Modify design.','hanne'),
'priority' => 11,
'panel' => 'hanne_design_panel'
)
);
$wp_customize->add_setting(
'hanne_custom_css',
array(
'default' => '',
'capability' => 'edit_theme_options',
'sanitize_callback' => 'wp_filter_nohtml_kses',
'sanitize_js_callback' => 'wp_filter_nohtml_kses'
)
);
$wp_customize->add_control(
new Hanne_Custom_CSS_Control(
$wp_customize,
'hanne_custom_css',
array(
'section' => 'hanne_custom_codes',
'settings' => 'hanne_custom_css'
)
)
);
function hanne_sanitize_text( $input ) {
return wp_kses_post( force_balance_tags( $input ) );
}
$wp_customize-> add_section(
'hanne_custom_footer',
array(
'title' => __('Custom Footer Text','hanne'),
'description' => __('Enter your Own Copyright Text.','hanne'),
'priority' => 11,
'panel' => 'hanne_design_panel'
)
);
$wp_customize->add_setting(
'hanne_footer_text',
array(
'default' => '',
'sanitize_callback' => 'sanitize_text_field'
)
);
$wp_customize->add_control(
'hanne_footer_text',
array(
'section' => 'hanne_custom_footer',
'settings' => 'hanne_footer_text',
'type' => 'text'
)
);
$wp_customize->add_section(
'hanne_typo_options',
array(
'title' => __('Google Web Fonts','hanne'),
'priority' => 41,
)
);
$font_array = array('HIND','Khula','Open Sans','Droid Sans','Droid Serif','Roboto','Roboto Condensed','Lato','Bree Serif','Oswald','Slabo','Lora','Source Sans Pro','Arimo','Bitter','Noto Sans');
$fonts = array_combine($font_array, $font_array);
$wp_customize->add_setting(
'hanne_title_font',
array(
'default'=> 'HIND',
'sanitize_callback' => 'hanne_sanitize_gfont'
)
);
function hanne_sanitize_gfont( $input ) {
if ( in_array($input, array('HIND','Khula','Open Sans','Droid Sans','Droid Serif','Roboto','Roboto Condensed','Lato','Bree Serif','Oswald','Slabo','Lora','Source Sans Pro','Arimo','Bitter','Noto Sans') ) )
return $input;
else
return '';
}
$wp_customize->add_control(
'hanne_title_font',array(
'label' => __('Title','hanne'),
'settings' => 'hanne_title_font',
'section' => 'hanne_typo_options',
'type' => 'select',
'choices' => $fonts,
)
);
$wp_customize->add_setting(
'hanne_body_font',
array( 'default'=> 'Open Sans',
'sanitize_callback' => 'hanne_sanitize_gfont' )
);
$wp_customize->add_control(
'hanne_body_font',array(
'label' => __('Body','hanne'),
'settings' => 'hanne_body_font',
'section' => 'hanne_typo_options',
'type' => 'select',
'choices' => $fonts
)
);
// Social Icons
$wp_customize->add_section('hanne_social_section', array(
'title' => __('Social Icons','hanne'),
'priority' => 44 ,
));
$social_networks = array( //Redefinied in Sanitization Function.
'none' => __('-','hanne'),
'facebook' => __('Facebook','hanne'),
'twitter' => __('Twitter','hanne'),
'google-plus' => __('Google Plus','hanne'),
'instagram' => __('Instagram','hanne'),
'rss' => __('RSS Feeds','hanne'),
'vine' => __('Vine','hanne'),
'vimeo-square' => __('Vimeo','hanne'),
'youtube' => __('Youtube','hanne'),
'flickr' => __('Flickr','hanne'),
);
$social_count = count($social_networks);
for ($x = 1 ; $x <= ($social_count - 3) ; $x++) :
$wp_customize->add_setting(
'hanne_social_'.$x, array(
'sanitize_callback' => 'hanne_sanitize_social',
'default' => 'none'
));
$wp_customize->add_control( 'hanne_social_'.$x, array(
'settings' => 'hanne_social_'.$x,
'label' => __('Icon ','hanne').$x,
'section' => 'hanne_social_section',
'type' => 'select',
'choices' => $social_networks,
));
$wp_customize->add_setting(
'hanne_social_url'.$x, array(
'sanitize_callback' => 'esc_url_raw'
));
$wp_customize->add_control( 'hanne_social_url'.$x, array(
'settings' => 'hanne_social_url'.$x,
'description' => __('Icon ','hanne').$x.__(' Url','hanne'),
'section' => 'hanne_social_section',
'type' => 'url',
'choices' => $social_networks,
));
endfor;
function hanne_sanitize_social( $input ) {
$social_networks = array(
'none' ,
'facebook',
'twitter',
'google-plus',
'instagram',
'rss',
'vine',
'vimeo-square',
'youtube',
'flickr'
);
if ( in_array($input, $social_networks) )
return $input;
else
return '';
}
$wp_customize->add_section(
'hanne_sec_upgrade',
array(
'title' => __('Hanne - Help & Support','hanne'),
'priority' => 45,
)
);
$wp_customize->add_setting(
'hanne_upgrade',
array( 'sanitize_callback' => 'esc_textarea' )
);
$wp_customize->add_control(
new Hanne_WP_Customize_Upgrade_Control(
$wp_customize,
'hanne_upgrade',
array(
'label' => __('WordPress Support Forums','hanne'),
'description' => __('Visit the Official WordPress Support Forums for Help related to this theme. Upgrade to Pro.','hanne'),
'section' => 'hanne_sec_upgrade',
'settings' => 'hanne_upgrade',
)
)
);
/* Sanitization Functions Common to Multiple Settings go Here, Specific Sanitization Functions are defined along with add_setting() */
function hanne_sanitize_checkbox( $input ) {
if ( $input == 1 ) {
return 1;
} else {
return '';
}
}
function hanne_sanitize_positive_number( $input ) {
if ( ($input >= 0) && is_numeric($input) )
return $input;
else
return '';
}
function hanne_sanitize_category( $input ) {
if ( term_exists(get_cat_name( $input ), 'category') )
return $input;
else
return '';
}
}
add_action( 'customize_register', 'hanne_customize_register' );
/**
* Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
*/
function hanne_customize_preview_js() {
wp_enqueue_script( 'hanne_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20130508', true );
}
add_action( 'customize_preview_init', 'hanne_customize_preview_js' );