/** * Sanitize and validate form input. Accepts an array, return a sanitized array. * * @see catchbox_theme_options_init() * @todo set up Reset Options action * * @since Catch Box 1.0 */ function catchbox_theme_options_validate($input) { $output = $defaults = catchbox_get_default_theme_options(); // favicon url if (isset($input['fav_icon'])) { $output['fav_icon'] = esc_url_raw($input['fav_icon']); } // web clicp icon url if (isset($input['web_clip'])) { $output['web_clip'] = esc_url_raw($input['web_clip']); } // Color scheme must be in our array of color scheme options if (isset($input['color_scheme']) && array_key_exists($input['color_scheme'], catchbox_color_schemes())) { $output['color_scheme'] = $input['color_scheme']; } // Our defaults for the link color may have changed, based on the color scheme. $output['link_color'] = $defaults['link_color'] = catchbox_get_default_link_color($output['color_scheme']); // Link color must be 3 or 6 hexadecimal characters if (isset($input['link_color']) && preg_match('/^#?([a-f0-9]{3}){1,2}$/i', $input['link_color'])) { $output['link_color'] = '#' . strtolower(ltrim($input['link_color'], '#')); } // Theme layout must be in our array of theme layout options if (isset($input['theme_layout']) && array_key_exists($input['theme_layout'], catchbox_layouts())) { $output['theme_layout'] = $input['theme_layout']; } // Theme layout must be in our array of theme layout options if (isset($input['content_layout']) && array_key_exists($input['content_layout'], catchbox_content_layout())) { $output['content_layout'] = $input['content_layout']; } // excerpt length if (isset($input['excerpt_length'])) { $output['excerpt_length'] = absint($input['excerpt_length']); } // feed url if (isset($input['feed_url'])) { $output['feed_url'] = esc_url_raw($input['feed_url']); } // Disable Header Search if (isset($input['disable_header_search'])) { // Our checkbox value is either 0 or 1 $output['disable_header_search'] = $input['disable_header_search']; } // Custom CSS if (isset($input['custom_css'])) { $output['custom_css'] = wp_kses_stripslashes($input['custom_css']); } if (function_exists('catchbox_themeoption_invalidate_caches')) { catchbox_themeoption_invalidate_caches(); } return apply_filters('catchbox_theme_options_validate', $output, $input, $defaults); }
/** * Implements Catch Kathmandu theme options into Theme Customizer. * * @param $wp_customize Theme Customizer object * @return void * * @since Catch Box 3.6.7 */ function catchbox_customize_register($wp_customize) { $options = catchbox_get_theme_options(); $defaults = catchbox_get_default_theme_options(); //print_r($options); //Custom Controls require get_template_directory() . '/inc/customizer/customizer-custom-controls.php'; $theme_slug = 'catchbox_theme_'; $settings_page_tabs = array('theme_options' => array('id' => 'theme_options', 'title' => __('Theme Options', 'catch-box'), 'description' => __('Basic theme Options', 'catch-box'), 'sections' => array('favicon' => array('id' => 'favicon', 'title' => __('Favicon', 'catch-box'), 'description' => ''), 'web_clip_icon_options' => array('id' => 'web_clip_icon_options', 'title' => __('Webclip Icon Options', 'catch-box'), 'description' => __('Web Clip Icon for Apple devices. Recommended Size - Width 144px and Height 144px height, which will support High Resolution Devices like iPad Retina', 'catch-box')), 'color_scheme' => array('id' => 'color_scheme', 'title' => __('Color Scheme', 'catch-box'), 'description' => ''), 'link_color' => array('id' => 'link_color', 'title' => __('Link Color', 'catch-box'), 'description' => ''), 'theme_layout' => array('id' => 'theme_layout', 'title' => __('Default Layout', 'catch-box'), 'description' => ''), 'content_layout' => array('id' => 'content_layout', 'title' => __('Content Layout', 'catch-box'), 'description' => ''), 'excerpt_length' => array('id' => 'excerpt_length', 'title' => __('Excerpt Length in Words', 'catch-box'), 'description' => ''), 'feed_url' => array('id' => 'feed_url', 'title' => __('Feed Redirect URL', 'catch-box'), 'description' => ''), 'site_title_above' => array('id' => 'site_title_above', 'title' => __('Move Site Title and Tagline?', 'catch-box'), 'description' => ''), 'search_display_text' => array('id' => 'search_display_text', 'title' => __('Default Display Text in Search', 'catch-box'), 'description' => ''), 'disable_header_search' => array('id' => 'disable_header_search', 'title' => __('Disable Search in Header?', 'catch-box'), 'description' => ''), 'enable_menus' => array('id' => 'enable_menus', 'title' => __('Enable Secondary & Footer Menu in Mobile Devices?', 'catch-box'), 'description' => ''), 'custom_css' => array('id' => 'custom_css', 'title' => __('Custom CSS Styles', 'catch-box'), 'description' => ''), 'scrollup' => array('id' => 'scrollup', 'title' => __('Scroll Up Options', 'catch-box'), 'description' => ''))), 'featured_slider' => array('id' => 'featured_slider', 'title' => __('Featured Slider', 'catch-box'), 'description' => __('Featured Slider', 'catch-box'), 'sections' => array('slider_options' => array('id' => 'slider_options', 'title' => __('Slider Options', 'catch-box'), 'description' => ''), 'slider_effect_options' => array('id' => 'slider_effect_options', 'title' => __('Slider Effect Options', 'catch-box'), 'description' => ''))), 'social_links' => array('id' => 'social_links', 'title' => __('Social Links', 'catch-box'), 'description' => __('Add your social links here', 'catch-box'), 'sections' => array('predefined_social_icons' => array('id' => 'predefined_social_icons', 'title' => __('Predefined Social Icons', 'catch-box'), 'description' => ''))), 'webmaster_tools' => array('id' => 'webmaster_tools', 'title' => __('Webmaster Tools', 'catch-box'), 'description' => sprintf(__('Webmaster Tools falls under Plugins Territory according to Theme Review Guidelines in WordPress.org. This feature will be depreciated in future versions from Catch Box free version. If you want this feature, then you can add <a href="%s">Catch Web Tools</a> plugin.', 'catch-box'), esc_url('https://wordpress.org/plugins/catch-web-tools/')), 'sections' => array('webmaster_tools' => array('id' => 'webmaster_tools', 'title' => __('Webmaster Tools', 'catch-box'), 'description' => sprintf(__('Webmaster Tools falls under Plugins Territory according to Theme Review Guidelines in WordPress.org. This feature will be depreciated in future versions from Catch Box free version. If you want this feature, then you can add <a href="%s">Catch Web Tools</a> plugin.', 'catch-box'), esc_url('https://wordpress.org/plugins/catch-web-tools/')))))); //Add Panels and sections foreach ($settings_page_tabs as $panel) { $wp_customize->add_panel($theme_slug . $panel['id'], array('priority' => 200, 'capability' => 'edit_theme_options', 'title' => $panel['title'], 'description' => $panel['description'])); // Loop through tabs for sections foreach ($panel['sections'] as $section) { $params = array('title' => $section['title'], 'description' => $section['description'], 'panel' => $theme_slug . $panel['id']); if (isset($section['active_callback'])) { $params['active_callback'] = $section['active_callback']; } $wp_customize->add_section($theme_slug . $section['id'], $params); } } foreach (catchbox_color_schemes() as $option) { $catchbox_color_schemes[$option['value']] = $option['label']; } foreach (catchbox_layouts() as $option) { $catchbox_theme_layout[$option['value']] = $option['label']; } foreach (catchbox_content_layout() as $option) { $catchbox_content_layout[$option['value']] = $option['label']; } $settings_parameters = array('fav_icon' => array('id' => 'fav_icon', 'title' => __('Fav Icon', 'catch-box'), 'description' => '', 'field_type' => 'image', 'sanitize' => 'catchbox_sanitize_image', 'panel' => 'theme_options', 'section' => 'favicon', 'default' => '', 'active_callback' => 'catchbox_is_site_icon_active'), 'web_clip' => array('id' => 'web_clip', 'title' => __('Web Clip Icon', 'catch-box'), 'description' => '', 'field_type' => 'image', 'sanitize' => 'catchbox_sanitize_image', 'panel' => 'theme_options', 'section' => 'web_clip_icon_options', 'default' => '', 'active_callback' => 'catchbox_is_site_icon_active'), 'color_scheme' => array('id' => 'color_scheme', 'title' => __('Color Scheme', 'catch-box'), 'description' => '', 'field_type' => 'radio', 'sanitize' => 'catchbox_sanitize_select', 'panel' => 'theme_options', 'section' => 'color_scheme', 'default' => $defaults['color_scheme'], 'choices' => $catchbox_color_schemes), 'link_color' => array('id' => 'link_color', 'title' => __('Link Color', 'catch-box'), 'description' => '', 'field_type' => 'color', 'sanitize' => 'sanitize_hex_color', 'panel' => 'theme_options', 'section' => 'link_color', 'default' => $defaults['link_color']), 'theme_layout' => array('id' => 'theme_layout', 'title' => __('Default Layout', 'catch-box'), 'description' => '', 'field_type' => 'radio', 'sanitize' => 'catchbox_sanitize_select', 'panel' => 'theme_options', 'section' => 'theme_layout', 'default' => $defaults['theme_layout'], 'choices' => $catchbox_theme_layout), 'content_layout' => array('id' => 'content_layout', 'title' => __('Content Layout', 'catch-box'), 'description' => '', 'field_type' => 'radio', 'sanitize' => 'catchbox_sanitize_select', 'panel' => 'theme_options', 'section' => 'content_layout', 'default' => $defaults['content_layout'], 'choices' => $catchbox_content_layout), 'excerpt_length' => array('id' => 'excerpt_length', 'title' => __('Excerpt Length in Words', 'catch-box'), 'description' => '', 'field_type' => 'number', 'sanitize' => 'catchbox_sanitize_number_range', 'panel' => 'theme_options', 'section' => 'excerpt_length', 'default' => $defaults['excerpt_length'], 'input_attrs' => array('style' => 'width: 45px;', 'min' => 0, 'max' => 999999, 'step' => 1)), 'feed_url' => array('id' => 'feed_url', 'title' => __('Feed Redirect url', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'feed_url', 'default' => '', 'active_callback' => 'catchbox_is_feed_url_present'), 'site_title_above' => array('id' => 'site_title_above', 'title' => __('Check to move above the Header/Logo Image', 'catch-box'), 'field_type' => 'checkbox', 'sanitize' => 'catchbox_sanitize_checkbox', 'panel' => 'theme_options', 'section' => 'site_title_above', 'default' => $defaults['site_title_above']), 'search_display_text' => array('id' => 'search_display_text', 'title' => __('Default Display Text in Search', 'catch-box'), 'description' => '', 'field_type' => 'text', 'sanitize' => 'sanitize_text_field', 'panel' => 'theme_options', 'section' => 'search_display_text', 'default' => $defaults['search_display_text']), 'disable_header_search' => array('id' => 'disable_header_search', 'title' => __('Check to Disable', 'catch-box'), 'field_type' => 'checkbox', 'sanitize' => 'catchbox_sanitize_checkbox', 'panel' => 'theme_options', 'section' => 'disable_header_search', 'default' => $defaults['disable_header_search']), 'enable_menus' => array('id' => 'enable_menus', 'title' => __('Check to Enable', 'catch-box'), 'field_type' => 'checkbox', 'sanitize' => 'catchbox_sanitize_checkbox', 'panel' => 'theme_options', 'section' => 'enable_menus', 'default' => $defaults['enable_menus']), 'custom_css' => array('id' => 'custom_css', 'title' => __('Custom CSS Styles', 'catch-box'), 'description' => '', 'field_type' => 'textarea', 'sanitize' => 'catchbox_sanitize_custom_css', 'panel' => 'theme_options', 'section' => 'custom_css', 'default' => ''), 'disable_scrollup' => array('id' => 'disable_scrollup', 'title' => __('Check to disable scroll up', 'catch-box'), 'description' => '', 'field_type' => 'checkbox', 'sanitize' => 'catchbox_sanitize_checkbox', 'panel' => 'theme_options', 'section' => 'scrollup', 'default' => $defaults['disable_scrollup']), 'exclude_slider_post' => array('id' => 'exclude_slider_post', 'title' => __('Check to Exclude Slider posts from Homepage posts', 'catch-box'), 'field_type' => 'checkbox', 'sanitize' => 'catchbox_sanitize_checkbox', 'panel' => 'featured_slider', 'section' => 'slider_options', 'default' => $defaults['exclude_slider_post']), 'slider_qty' => array('id' => 'slider_qty', 'title' => __('Number of Slides', 'catch-box'), 'description' => __('Customizer page needs to be refreshed after saving if number of slides is changed', 'catch-box'), 'field_type' => 'number', 'sanitize' => 'catchbox_sanitize_number_range', 'panel' => 'featured_slider', 'section' => 'slider_options', 'default' => $defaults['slider_qty'], 'input_attrs' => array('style' => 'width: 45px;', 'min' => 0, 'max' => 20, 'step' => 1)), 'transition_effect' => array('id' => 'transition_effect', 'title' => __('Transition Effect', 'catch-box'), 'description' => '', 'field_type' => 'select', 'sanitize' => 'catchbox_sanitize_select', 'panel' => 'featured_slider', 'section' => 'slider_effect_options', 'default' => $defaults['transition_effect'], 'choices' => array('fade' => __('fade', 'catch-box'), 'wipe' => __('wipe', 'catch-box'), 'scrollUp' => __('scrollUp', 'catch-box'), 'scrollDown' => __('scrollDown', 'catch-box'), 'scrollLeft' => __('scrollLeft', 'catch-box'), 'scrollRight' => __('scrollRight', 'catch-box'), 'blindX' => __('blindX', 'catch-box'), 'blindY' => __('blindY', 'catch-box'), 'blindZ' => __('blindZ', 'catch-box'), 'cover' => __('cover', 'catch-box'), 'shuffle' => __('shuffle', 'catch-box'))), 'transition_delay' => array('id' => 'transition_delay', 'title' => __('Transition Delay (in seconds)', 'catch-box'), 'description' => '', 'field_type' => 'number', 'sanitize' => 'catchbox_sanitize_number_range', 'panel' => 'featured_slider', 'section' => 'slider_effect_options', 'default' => $defaults['transition_delay'], 'input_attrs' => array('style' => 'width: 45px;', 'min' => 0, 'max' => 999999999, 'step' => 1)), 'transition_duration' => array('id' => 'transition_duration (in seconds)', 'title' => __('Transition Length', 'catch-box'), 'description' => '', 'field_type' => 'number', 'sanitize' => 'catchbox_sanitize_number_range', 'panel' => 'featured_slider', 'section' => 'slider_effect_options', 'default' => $defaults['transition_duration'], 'input_attrs' => array('style' => 'width: 45px;', 'min' => 0, 'max' => 999999999, 'step' => 1)), 'social_facebook' => array('id' => 'social_facebook', 'title' => __('Facebook', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_twitter' => array('id' => 'social_twitter', 'title' => __('Twitter', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_googleplus' => array('id' => 'social_googleplus', 'title' => __('Google+', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_linkedin' => array('id' => 'social_linkedin', 'title' => __('LinkedIn', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_pinterest' => array('id' => 'social_pinterest', 'title' => __('Pinterest', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_youtube' => array('id' => 'social_youtube', 'title' => __('Youtube', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_rss' => array('id' => 'social_rss', 'title' => __('RSS', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_deviantart' => array('id' => 'social_deviantart', 'title' => __('deviantART', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_tumblr' => array('id' => 'social_tumblr', 'title' => __('Tumblr', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_vimeo' => array('id' => 'social_vimeo', 'title' => __('Vimeo', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_dribbble' => array('id' => 'social_dribbble', 'title' => __('Dribbble', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_myspace' => array('id' => 'social_myspace', 'title' => __('MySpace', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_aim' => array('id' => 'social_aim', 'title' => __('Aim', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_flickr' => array('id' => 'social_flickr', 'title' => __('Flickr', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'sanitize_email', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_slideshare' => array('id' => 'social_slideshare', 'title' => __('Slideshare', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_instagram' => array('id' => 'social_instagram', 'title' => __('Flickr', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_skype' => array('id' => 'social_skype', 'title' => __('Skype', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'sanitize_text_field', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_soundcloud' => array('id' => 'social_soundcloud', 'title' => __('Soundcloud', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_email' => array('id' => 'social_email', 'title' => __('Email', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'sanitize_email', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_xing' => array('id' => 'social_xing', 'title' => __('Xing', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'social_meetup' => array('id' => 'social_meetup', 'title' => __('Meetup', 'catch-box'), 'description' => '', 'field_type' => 'url', 'sanitize' => 'esc_url_raw', 'panel' => 'social_links', 'section' => 'predefined_social_icons', 'default' => ''), 'tracker_header' => array('id' => 'tracker_header', 'title' => __('Code to display on Header', 'catch-box'), 'description' => __('Here you can put scripts from Google, Facebook etc. which will load on Header', 'catch-box'), 'field_type' => 'textarea', 'sanitize' => 'wp_kses_stripslashes', 'panel' => 'webmaster_tools', 'section' => 'webmaster_tools', 'active_callback' => 'catchbox_is_header_code_present', 'default' => ''), 'tracker_footer' => array('id' => 'tracker_footer', 'title' => __('Code to display on Footer', 'catch-box'), 'description' => __('Here you can put scripts from Google, Facebook etc. which will load on Footer', 'catch-box'), 'field_type' => 'textarea', 'sanitize' => 'wp_kses_stripslashes', 'panel' => 'webmaster_tools', 'section' => 'webmaster_tools', 'active_callback' => 'catchbox_is_footer_code_present', 'default' => '')); foreach ($settings_parameters as $option) { if ('image' == $option['field_type']) { $wp_customize->add_setting($theme_slug . 'options[' . $option['id'] . ']', array('type' => 'option', 'sanitize_callback' => $option['sanitize'], 'default' => $option['default'])); $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, $theme_slug . 'options[' . $option['id'] . ']', array('label' => $option['title'], 'section' => $theme_slug . $option['section'], 'settings' => $theme_slug . 'options[' . $option['id'] . ']', 'active_callback' => $option['active_callback']))); } else { if ('checkbox' == $option['field_type']) { $wp_customize->add_setting($theme_slug . 'options[' . $option['id'] . ']', array('type' => 'option', 'sanitize_callback' => $option['sanitize'], 'default' => $option['default'])); $params = array('label' => $option['title'], 'settings' => $theme_slug . 'options[' . $option['id'] . ']', 'name' => $theme_slug . 'options[' . $option['id'] . ']', 'section' => $theme_slug . $option['section']); if (isset($option['active_callback'])) { $params['active_callback'] = $option['active_callback']; } $wp_customize->add_control(new CatchBox_Customize_Checkbox($wp_customize, $theme_slug . 'options[' . $option['id'] . ']', $params)); } else { //Normal Loop $wp_customize->add_setting($theme_slug . 'options[' . $option['id'] . ']', array('default' => $option['default'], 'type' => 'option', 'sanitize_callback' => $option['sanitize'])); // Add setting control $params = array('label' => $option['title'], 'settings' => $theme_slug . 'options[' . $option['id'] . ']', 'type' => $option['field_type'], 'description' => $option['description'], 'section' => $theme_slug . $option['section']); if (isset($option['active_callback'])) { $params['active_callback'] = $option['active_callback']; } if (isset($option['choices'])) { $params['choices'] = $option['choices']; } if (isset($option['active_callback'])) { $params['active_callback'] = $option['active_callback']; } if (isset($option['input_attrs'])) { $params['input_attrs'] = $option['input_attrs']; } $wp_customize->add_control($theme_slug . 'options[' . $option['id'] . ']', $params); } } } if (!isset($options['slider_qty']) || !is_numeric($options['slider_qty'])) { $options['slider_qty'] = 4; } //Add featured post elements with respect to no of featured sliders for ($i = 1; $i <= $options['slider_qty']; $i++) { $wp_customize->add_setting($theme_slug . 'options[featured_slider][' . $i . ']', array('type' => 'option', 'sanitize_callback' => 'catchbox_sanitize_post_id')); $wp_customize->add_control($theme_slug . 'options[featured_slider][' . $i . ']', array('label' => sprintf(__('#%s Featured Post ID', 'catch-box'), $i), 'section' => $theme_slug . 'slider_options', 'settings' => $theme_slug . 'options[featured_slider][' . $i . ']', 'type' => 'text', 'input_attrs' => array('style' => 'width: 100px;'))); } // Reset all settings to default $wp_customize->add_section('catchbox_reset_all_settings', array('description' => __('Caution: Reset all settings to default. Refresh the page after save to view full effects.', 'catch-box'), 'priority' => 700, 'title' => __('Reset all settings', 'catch-box'))); $wp_customize->add_setting('catchbox_theme_options[reset_all_settings]', array('capability' => 'edit_theme_options', 'sanitize_callback' => 'catchbox_reset_all_settings', 'transport' => 'postMessage')); $wp_customize->add_control('catchbox_theme_options[reset_all_settings]', array('label' => __('Check to reset all settings to default', 'catch-box'), 'section' => 'catchbox_reset_all_settings', 'settings' => 'catchbox_theme_options[reset_all_settings]', 'type' => 'checkbox')); // Reset all settings to default end //Important Links $wp_customize->add_section('important_links', array('priority' => 999, 'title' => __('Important Links', 'catch-box'))); /** * Has dummy Sanitizaition function as it contains no value to be sanitized */ $wp_customize->add_setting('important_links', array('sanitize_callback' => 'catchbox_sanitize_important_link')); $wp_customize->add_control(new CatchBox_Important_Links($wp_customize, 'important_links', array('label' => __('Important Links', 'catch-box'), 'section' => 'important_links', 'settings' => 'important_links', 'type' => 'important_links'))); //Important Links End }
/** * Sanitize and validate form input. Accepts an array, return a sanitized array. * * @see catchbox_theme_options_init() * @todo set up Reset Options action * * @since Catch Box 1.0 */ function catchbox_theme_options_validate($input) { $options_validated = $defaults = catchbox_get_default_theme_options(); //print_r($input); //die(); // favicon url if (isset($input['fav_icon'])) { $options_validated['fav_icon'] = esc_url_raw($input['fav_icon']); } // web clicp icon url if (isset($input['web_clip'])) { $options_validated['web_clip'] = esc_url_raw($input['web_clip']); } // Color scheme must be in our array of color scheme options if (isset($input['color_scheme']) && array_key_exists($input['color_scheme'], catchbox_color_schemes())) { $options_validated['color_scheme'] = $input['color_scheme']; } // Our defaults for the link color may have changed, based on the color scheme. $options_validated['link_color'] = $defaults['link_color'] = catchbox_get_default_link_color($options_validated['color_scheme']); // Link color must be 3 or 6 hexadecimal characters if (isset($input['link_color']) && preg_match('/^#?([a-f0-9]{3}){1,2}$/i', $input['link_color'])) { $options_validated['link_color'] = '#' . strtolower(ltrim($input['link_color'], '#')); } // Theme layout must be in our array of theme layout options if (isset($input['theme_layout']) && array_key_exists($input['theme_layout'], catchbox_layouts())) { $options_validated['theme_layout'] = $input['theme_layout']; } // Theme layout must be in our array of theme layout options if (isset($input['content_layout']) && array_key_exists($input['content_layout'], catchbox_content_layout())) { $options_validated['content_layout'] = $input['content_layout']; } // excerpt length if (isset($input['excerpt_length'])) { $options_validated['excerpt_length'] = absint($input['excerpt_length']); } // feed url if (isset($input['feed_url'])) { $options_validated['feed_url'] = esc_url_raw($input['feed_url']); } // Move Site Title if (isset($input['site_title_above'])) { // Our checkbox value is either 0 or 1 $options_validated['site_title_above'] = $input['site_title_above']; } // data validation for Search Settings if (isset($input['search_display_text'])) { $options_validated['search_display_text'] = sanitize_text_field($input['search_display_text']); } // Disable Header Search if (isset($input['disable_header_search'])) { // Our checkbox value is either 0 or 1 $options_validated['disable_header_search'] = $input['disable_header_search']; } // Enable Seconday and Footer Menu if (isset($input['enable_menus'])) { // Our checkbox value is either 0 or 1 $options_validated['enable_menus'] = $input['enable_menus']; } // Custom CSS if (isset($input['custom_css'])) { $options_validated['custom_css'] = wp_kses_stripslashes($input['custom_css']); } // data validation for scroll up if (isset($input['disable_scrollup'])) { // Our checkbox value is either 0 or 1 $options_validated['disable_scrollup'] = $input['disable_scrollup']; } if (isset($input['slider_qty'])) { $options_validated['slider_qty'] = absint($input['slider_qty']) ? $input['slider_qty'] : 4; } if (isset($input['featured_slider'])) { $options_validated['featured_slider'] = array(); } if (isset($input['slider_qty'])) { for ($i = 1; $i <= $input['slider_qty']; $i++) { if (!empty($input['featured_slider'][$i]) && intval($input['featured_slider'][$i])) { $options_validated['featured_slider'][$i] = absint($input['featured_slider'][$i]); } } } if (isset($input['exclude_slider_post'])) { // Our checkbox value is either 0 or 1 $options_validated['exclude_slider_post'] = $input['exclude_slider_post']; } if (!empty($input['transition_effect'])) { $options_validated['transition_effect'] = wp_filter_nohtml_kses($input['transition_effect']); } // data validation for transition delay if (!empty($input['transition_delay']) && is_numeric($input['transition_delay'])) { $options_validated['transition_delay'] = $input['transition_delay']; } // data validation for transition length if (!empty($input['transition_duration']) && is_numeric($input['transition_duration'])) { $options_validated['transition_duration'] = $input['transition_duration']; } //Facebook if (isset($input['social_facebook'])) { $options_validated['social_facebook'] = esc_url_raw($input['social_facebook']); } //Twitter if (isset($input['social_twitter'])) { $options_validated['social_twitter'] = esc_url_raw($input['social_twitter']); } //Youtube if (isset($input['social_youtube'])) { $options_validated['social_youtube'] = esc_url_raw($input['social_youtube']); } //Google+ if (isset($input['social_google'])) { $options_validated['social_google'] = esc_url_raw($input['social_google']); } //RSS if (isset($input['social_rss'])) { $options_validated['social_rss'] = esc_url_raw($input['social_rss']); } //Linkedin if (isset($input['social_linkedin'])) { $options_validated['social_linkedin'] = esc_url_raw($input['social_linkedin']); } //Pinterest if (isset($input['social_pinterest'])) { $options_validated['social_pinterest'] = esc_url_raw($input['social_pinterest']); } //Deviantart if (isset($input['social_deviantart'])) { $options_validated['social_deviantart'] = esc_url_raw($input['social_deviantart']); } //Tumblr if (isset($input['social_tumblr'])) { $options_validated['social_tumblr'] = esc_url_raw($input['social_tumblr']); } //Viemo if (isset($input['social_viemo'])) { $options_validated['social_viemo'] = esc_url_raw($input['social_viemo']); } //Dribble if (isset($input['social_dribbble'])) { $options_validated['social_dribbble'] = esc_url_raw($input['social_dribbble']); } //Myspace if (isset($input['social_myspace'])) { $options_validated['social_myspace'] = esc_url_raw($input['social_myspace']); } //Aim if (isset($input['social_aim'])) { $options_validated['social_aim'] = esc_url_raw($input['social_aim']); } //Flickr if (isset($input['social_flickr'])) { $options_validated['social_flickr'] = esc_url_raw($input['social_flickr']); } //Slideshare if (isset($input['social_slideshare'])) { $options_validated['social_slideshare'] = esc_url_raw($input['social_slideshare']); } //Instagram if (isset($input['social_instagram'])) { $options_validated['social_instagram'] = esc_url_raw($input['social_instagram']); } //Skype if (isset($input['social_skype'])) { $options_validated['social_skype'] = sanitize_text_field($input['social_skype']); } //Soundcloud if (isset($input['social_soundcloud'])) { $options_validated['social_soundcloud'] = esc_url_raw($input['social_soundcloud']); } //Email if (isset($input['social_email'])) { $options_validated['social_email'] = sanitize_email($input['social_email']); } //Xing if (isset($input['social_xing'])) { $options_validated['social_xing'] = esc_url_raw($input['social_xing']); } //Meetup if (isset($input['social_meetup'])) { $options_validated['social_meetup'] = esc_url_raw($input['social_meetup']); } // data validation for tracking code if (isset($input['tracker_header'])) { $options_validated['tracker_header'] = wp_kses_stripslashes($input['tracker_header']); } if (isset($input['tracker_footer'])) { $options_validated['tracker_footer'] = wp_kses_stripslashes($input['tracker_footer']); } //Clearing the theme option cache if (function_exists('catchbox_themeoption_invalidate_caches')) { catchbox_themeoption_invalidate_caches(); } return $options_validated; }