get_section( 'title_tagline' )->priority = 1; // check if exists in case user has no pages if ( is_object( $wp_customize->get_section( 'static_front_page' ) ) ) { $wp_customize->get_section( 'static_front_page' )->priority = 5; $wp_customize->get_section( 'static_front_page' )->title = __( 'Front Page', 'period' ); } /***** Add PostMessage Support *****/ $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; /***** Logo Upload *****/ // section $wp_customize->add_section( 'ct_period_logo_upload', array( 'title' => __( 'Logo', 'period' ), 'priority' => 20 ) ); // Upload - setting $wp_customize->add_setting( 'logo_upload', array( 'sanitize_callback' => 'esc_url_raw' ) ); // Upload - control $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'logo_image', array( 'label' => __( 'Upload a logo', 'period' ), 'section' => 'ct_period_logo_upload', 'settings' => 'logo_upload' ) ) ); // Size - setting $wp_customize->add_setting( 'logo_size', array( 'default' => '168', 'sanitize_callback' => 'absint', 'transport' => 'postMessage' ) ); // Size - control $wp_customize->add_control( 'logo_size', array( 'label' => __( 'Adjust the size of the logo', 'period' ), 'section' => 'ct_period_logo_upload', 'settings' => 'logo_size', 'type' => 'range', 'input_attrs' => array( 'min' => 5, 'max' => 750, 'step' => 1 ) ) ); /***** Social Media Icons *****/ // get the social sites array $social_sites = ct_period_social_array(); // set a priority used to order the social sites $priority = 5; // section $wp_customize->add_section( 'ct_period_social_media_icons', array( 'title' => __( 'Social Media Icons', 'period' ), 'priority' => 25, 'description' => __( 'Add the URL for each of your social profiles.', 'period' ) ) ); // create a setting and control for each social site foreach ( $social_sites as $social_site => $value ) { // if email icon if ( $social_site == 'email' ) { // setting $wp_customize->add_setting( $social_site, array( 'sanitize_callback' => 'ct_period_sanitize_email' ) ); // control $wp_customize->add_control( $social_site, array( 'label' => __( 'Email Address', 'period' ), 'section' => 'ct_period_social_media_icons', 'priority' => $priority ) ); } else { $label = ucfirst( $social_site ); if ( $social_site == 'google-plus' ) { $label = 'Google Plus'; } elseif ( $social_site == 'rss' ) { $label = 'RSS'; } elseif ( $social_site == 'soundcloud' ) { $label = 'SoundCloud'; } elseif ( $social_site == 'slideshare' ) { $label = 'SlideShare'; } elseif ( $social_site == 'codepen' ) { $label = 'CodePen'; } elseif ( $social_site == 'stumbleupon' ) { $label = 'StumbleUpon'; } elseif ( $social_site == 'deviantart' ) { $label = 'DeviantArt'; } elseif ( $social_site == 'hacker-news' ) { $label = 'Hacker News'; } elseif ( $social_site == 'whatsapp' ) { $label = 'WhatsApp'; } elseif ( $social_site == 'qq' ) { $label = 'QQ'; } elseif ( $social_site == 'vk' ) { $label = 'VK'; } elseif ( $social_site == 'wechat' ) { $label = 'WeChat'; } elseif ( $social_site == 'tencent-weibo' ) { $label = 'Tencent Weibo'; } elseif ( $social_site == 'paypal' ) { $label = 'PayPal'; } elseif ( $social_site == 'email-form' ) { $label = 'Contact Form'; } if ( $social_site == 'skype' ) { // setting $wp_customize->add_setting( $social_site, array( 'sanitize_callback' => 'ct_period_sanitize_skype' ) ); // control $wp_customize->add_control( $social_site, array( 'type' => 'url', 'label' => $label, 'description' => sprintf( __( 'Accepts Skype link protocol (learn more)', 'period' ), 'https://www.competethemes.com/blog/skype-links-wordpress/' ), 'section' => 'ct_period_social_media_icons', 'priority' => $priority ) ); } else { // setting $wp_customize->add_setting( $social_site, array( 'sanitize_callback' => 'esc_url_raw' ) ); // control $wp_customize->add_control( $social_site, array( 'type' => 'url', 'label' => $label, 'section' => 'ct_period_social_media_icons', 'priority' => $priority ) ); } } // increment the priority for next site $priority = $priority + 5; } /***** Search Bar *****/ // section $wp_customize->add_section( 'period_search_bar', array( 'title' => __( 'Search Bar', 'period' ), 'priority' => 37 ) ); // setting $wp_customize->add_setting( 'search_bar', array( 'default' => 'hide', 'sanitize_callback' => 'ct_period_sanitize_all_show_hide_settings' ) ); // control $wp_customize->add_control( 'search_bar', array( 'type' => 'radio', 'label' => __( 'Show search bar at top of site?', 'period' ), 'section' => 'period_search_bar', 'setting' => 'search_bar', 'choices' => array( 'show' => __( 'Show', 'period' ), 'hide' => __( 'Hide', 'period' ) ), ) ); /***** Layout *****/ // section $wp_customize->add_section( 'period_layout', array( 'title' => __( 'Layout', 'period' ), 'priority' => 40, 'description' => sprintf( __( 'Want more layouts? Check out the Period Pro plugin.', 'period' ), 'https://www.competethemes.com/period-pro/' ) ) ); // setting $wp_customize->add_setting( 'layout', array( 'default' => 'right', 'sanitize_callback' => 'ct_period_sanitize_layout_settings', 'transport' => 'postMessage' ) ); // control $wp_customize->add_control( 'layout', array( 'label' => __( 'Choose your layout', 'period' ), 'section' => 'period_layout', 'settings' => 'layout', 'type' => 'radio', 'choices' => array( 'right' => __( 'Right sidebar', 'period' ), 'left' => __( 'Left sidebar', 'period' ) ) ) ); /***** Blog *****/ // section $wp_customize->add_section( 'period_blog', array( 'title' => __( 'Blog', 'period' ), 'priority' => 45 ) ); // setting $wp_customize->add_setting( 'full_post', array( 'default' => 'no', 'sanitize_callback' => 'ct_period_sanitize_yes_no_settings' ) ); // control $wp_customize->add_control( 'full_post', array( 'label' => __( 'Show full posts on blog?', 'period' ), 'section' => 'period_blog', 'settings' => 'full_post', 'type' => 'radio', 'choices' => array( 'yes' => __( 'Yes', 'period' ), 'no' => __( 'No', 'period' ) ) ) ); // setting $wp_customize->add_setting( 'excerpt_length', array( 'default' => '25', 'sanitize_callback' => 'absint' ) ); // control $wp_customize->add_control( 'excerpt_length', array( 'label' => __( 'Excerpt word count', 'period' ), 'section' => 'period_blog', 'settings' => 'excerpt_length', 'type' => 'number' ) ); // Read More text - setting $wp_customize->add_setting( 'read_more_text', array( 'default' => __( 'Continue Reading', 'period' ), 'sanitize_callback' => 'ct_period_sanitize_text' ) ); // Read More text - control $wp_customize->add_control( 'read_more_text', array( 'label' => __( 'Read More button text', 'period' ), 'section' => 'period_blog', 'settings' => 'read_more_text', 'type' => 'text' ) ); /***** Display Controls *****/ // section $wp_customize->add_section( 'period_display', array( 'title' => __( 'Display Controls', 'period' ), 'priority' => 55, 'description' => sprintf( __( 'Want more options like these? Check out the Period Pro plugin.', 'period' ), 'https://www.competethemes.com/period-pro/' ) ) ); // setting - post author $wp_customize->add_setting( 'display_post_author', array( 'default' => 'show', 'sanitize_callback' => 'ct_period_sanitize_show_hide' ) ); // control - post author $wp_customize->add_control( 'display_post_author', array( 'type' => 'radio', 'label' => __( 'Post author name in byline', 'period' ), 'section' => 'period_display', 'setting' => 'display_post_author', 'choices' => array( 'show' => __( 'Show', 'period' ), 'hide' => __( 'Hide', 'period' ) ) ) ); // setting - post date $wp_customize->add_setting( 'display_post_date', array( 'default' => 'show', 'sanitize_callback' => 'ct_period_sanitize_show_hide' ) ); // control - post author $wp_customize->add_control( 'display_post_date', array( 'type' => 'radio', 'label' => __( 'Post date in byline', 'period' ), 'section' => 'period_display', 'setting' => 'display_post_date', 'choices' => array( 'show' => __( 'Show', 'period' ), 'hide' => __( 'Hide', 'period' ) ) ) ); /***** Custom CSS *****/ // section $wp_customize->add_section( 'period_custom_css', array( 'title' => __( 'Custom CSS', 'period' ), 'priority' => 75 ) ); // setting $wp_customize->add_setting( 'custom_css', array( 'sanitize_callback' => 'ct_period_sanitize_css', 'transport' => 'postMessage' ) ); // control $wp_customize->add_control( 'custom_css', array( 'type' => 'textarea', 'label' => __( 'Add Custom CSS Here', 'period' ), 'section' => 'period_custom_css', 'settings' => 'custom_css' ) ); } /***** Custom Sanitization Functions *****/ /* * Sanitize settings with show/hide as options * Used in: search bar */ function ct_period_sanitize_all_show_hide_settings( $input ) { $valid = array( 'show' => __( 'Show', 'period' ), 'hide' => __( 'Hide', 'period' ) ); return array_key_exists( $input, $valid ) ? $input : ''; } /* * sanitize email address * Used in: Social Media Icons */ function ct_period_sanitize_email( $input ) { return sanitize_email( $input ); } // sanitize yes/no settings function ct_period_sanitize_yes_no_settings( $input ) { $valid = array( 'yes' => __( 'Yes', 'period' ), 'no' => __( 'No', 'period' ) ); return array_key_exists( $input, $valid ) ? $input : ''; } function ct_period_sanitize_text( $input ) { return wp_kses_post( force_balance_tags( $input ) ); } function ct_period_sanitize_skype( $input ) { return esc_url_raw( $input, array( 'http', 'https', 'skype' ) ); } function ct_period_sanitize_css( $css ) { $css = wp_kses( $css, array( '\'', '\"' ) ); $css = str_replace( '>', '>', $css ); return $css; } function ct_period_sanitize_show_hide( $input ) { $valid = array( 'show' => __( 'Show', 'period' ), 'hide' => __( 'Hide', 'period' ) ); return array_key_exists( $input, $valid ) ? $input : ''; } function ct_period_sanitize_layout_settings( $input ) { /* * Also allow layouts only included in the premium plugin. * Needs to be done this way b/c sanitize_callback cannot by updated * via get_setting() */ $valid = array( 'right' => __( 'Right sidebar', 'period' ), 'left' => __( 'Left sidebar', 'period' ), 'narrow' => __( 'No sidebar - Narrow', 'period' ), 'wide' => __( 'No sidebar - Wide', 'period' ), 'two-right' => __( 'Two column - Right sidebar', 'period' ), 'two-left' => __( 'Two column - Left sidebar', 'period' ), 'two-narrow' => __( 'Two column - No Sidebar - Narrow', 'period' ), 'two-wide' => __( 'Two column - No Sidebar - Wide', 'period' ) ); return array_key_exists( $input, $valid ) ? $input : ''; } /***** Helper Functions *****/ function ct_period_customize_preview_js() { $content = ""; echo apply_filters( 'ct_period_customizer_ad', $content ); } add_action( 'customize_controls_print_footer_scripts', 'ct_period_customize_preview_js' );