__( 'Oops, nothing found.', 'blograzzi' ), 'is_rtl' => is_rtl(), 'import_select_file' => __( 'Please select the exported Blograzzi options file to import.', 'blograzzi' ), 'delete' => __( 'Delete', 'blograzzi' ), 'optional' => __( '(optional)', 'blograzzi' ), 'link' => __( 'Link', 'blograzzi' ), 'no_file' => __( 'Please select a settings file to import.', 'blograzzi' ), 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'blograzzi_uri' => BLOGRAZZI_ROOTURI, ); wp_localize_script( 'blograzzi-customizer', 'blograzziCustomizer', $l10n_data ); global $blograzzi_settings; wp_localize_script( 'blograzzi-customizer', 'blograzzi_settings', $blograzzi_settings ); } add_action( 'customize_controls_enqueue_scripts', 'blograzzi_enqueue_customizer_scripts' ); /** * Enqueue script to preview the changed settings */ function blograzzi_enqueue_customizer_preview_scripts(){ global $blograzzi_settings; $version = $blograzzi_settings['scripts_ver']; wp_enqueue_script( 'blograzzi-customizer-preview', BLOGRAZZI_ROOTURI . '/admin/customizer/customizer-preview.js', array( 'jquery' ), $version, true ); } add_action( 'customize_preview_init', 'blograzzi_enqueue_customizer_preview_scripts' ); /** * Add theme options to WordPress Customizer */ function blograzzi_customize_register( $wp_customize ) { /* Register all settings */ global $blograzzi_defaults; $transport_settings = blograzzi_get_customizer_transport_settings(); $validator_settings = blograzzi_get_customizer_validator_settings(); /* Register Blograzzi settings */ foreach ( $blograzzi_defaults as $setting => $default ) { $wp_customize->add_setting( 'blograzzi_settings[' . $setting . ']', array( 'type' => 'option', 'default' => $default, 'transport' => $transport_settings[$setting], 'sanitize_callback' => $validator_settings[$setting], ) ); } /* Change WordPress options transport */ $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; /* Register custom controls */ blograzzi_add_customizer_controls( $wp_customize ); /* Options panel */ $wp_customize->add_panel( 'blograzzi-general', array( 'title' => __( 'Blograzzi: General', 'blograzzi' ), ) ); $wp_customize->add_panel( 'blograzzi-display', array( 'title' => __( 'Blograzzi: Display', 'blograzzi' ), ) ); $wp_customize->add_panel( 'blograzzi-colours', array( 'title' => __( 'Blograzzi: Colours', 'blograzzi' ), 'description' => '

' . __( "Changing colours for your website involves a lot more than just trial and error. Simply mixing and matching colours without regard to their compatibility may do more damage than good to your site's aesthetics.", 'blograzzi' ) . '

' . sprintf( __( "It's generally a good idea to stick to colours from colour pallettes that are aesthetically pleasing. Try the %s website for a kickstart on some colour palettes you can use.", 'blograzzi' ), 'COLOURlovers' ) . '

', ) ); $wp_customize->add_panel( 'blograzzi-advanced', array( 'title' => __( 'Blograzzi: Advanced', 'blograzzi' ), ) ); $wp_customize->add_panel( 'blograzzi-utilities', array( 'title' => __( 'Blograzzi: Utilities', 'blograzzi' ), ) ); /* Register the options controls */ blograzzi_customizer_general_options( $wp_customize ); blograzzi_customizer_display_options( $wp_customize ); blograzzi_customizer_colour_options( $wp_customize ); blograzzi_customizer_advanced_options( $wp_customize ); blograzzi_customizer_utilities( $wp_customize ); } add_action( 'customize_register', 'blograzzi_customize_register' ); /** * Define the options for each setting */ function blograzzi_get_customizer_transport_settings(){ global $blograzzi_defaults; /* By default set all settings to refresh transport */ $transport_settings = array(); foreach ( $blograzzi_defaults as $setting => $default ) { $transport_settings[$setting] = 'refresh'; } /* Selectively set settings to postMessage transport */ $settings = array( 'header_img_height', 'slider_height', 'slider_height_mobile', 'copy_text', 'container_width', 'column_width', 'top_bar_bg', 'menu_primary_bg', 'menu_primary_item', 'menu_primary_active_bg', 'menu_primary_active_item', 'menu_primary_dd_item', 'menu_primary_dd_active_item', 'menu_sec_border', 'menu_sec_bg', 'menu_sec_item', 'menu_sec_active_bg', 'menu_sec_active_item', 'menu_sec_dd_item', 'menu_sec_dd_active_item', 'content_wrapper_bg', 'content_bg', 'meta_border', 'content_font_colour', 'title_font_colour', 'link_colour_normal', 'link_colour_hover', 'sticky_border', 'child_page_content_bg', 'widget_item_bg', 'widget_list', 'widget_header_border', 'slider_caption_bg', 'slider_caption_text', 'button_bg', 'button_label', 'label_bg', 'label_text', 'archive_bg', 'archive_border', 'archive_label', 'archive_text', 'footer_bg', 'footer_text', 'footer_link', 'comments_bg', 'comments_border', 'comments_box_shadow', 'comments_text', 'author_comments_border', ); foreach ( $settings as $setting ) { $transport_settings[$setting] = 'postMessage'; } return $transport_settings; } /** * Define the validator for each setting */ function blograzzi_get_customizer_validator_settings(){ global $blograzzi_defaults; /* By default set all settings to no validator */ $validator_settings = array(); foreach ( $blograzzi_defaults as $setting => $default ) { $validator_settings[$setting] = ''; } /** * Selectively set validator functions */ /* Slider options */ $validator_settings['slider_type'] = 'sanitize_text_field'; $validator_settings['slider_specific_posts'] = 'sanitize_text_field'; $validator_settings['slider_specific_categories'] = 'blograzzi_validate_multiple_select'; $validator_settings['slider_exclude_categories'] = 'sanitize_text_field'; $validator_settings['slider_content'] = 'sanitize_text_field'; $validator_settings['slider_postcount'] = 'absint'; $validator_settings['slider_height'] = 'absint'; $validator_settings['slider_interval'] = 'blograzzi_validate_numeric'; $validator_settings['slider_trans_duration'] = 'blograzzi_validate_numeric'; /* Front page options */ $validator_settings['frontpage_posts_cats'] = 'blograzzi_validate_multiple_select'; $validator_settings['front_page_blog_columns'] = 'absint'; /* Footer options */ $validator_settings['copy_text'] = 'wp_kses_post'; /* Excerpt options */ $validator_settings['excerpt_html_tags'] = 'trim'; /* Footer widget options */ $validator_settings['footerwidget_column'] = 'absint'; /* Miscellaneous options */ $validator_settings['favicon_url'] = 'esc_url_raw'; $validator_settings['custom_css'] = 'blograzzi_validate_css'; /* Advanced options */ $validator_settings['widget_hooks'] = 'blograzzi_validate_multiple_checkboxes'; /* Column width */ $validator_settings['column_width'] = 'blograzzi_validate_json'; /* Social profiles */ $validator_settings['social_profiles'] = 'blograzzi_validate_json'; return $validator_settings; } /** * Filter the returned settings from the database for live preview in customizer */ function blograzzi_customizer_filter_settings( $blograzzi_settings ){ if ( isset( $_POST['customized'] ) ) { $customized_settings = json_decode( wp_unslash( $_POST['customized'] ), true ); foreach ( $customized_settings as $setting => $value ) { if ( stripos( $setting, 'blograzzi_settings' ) === 0 ) { $setting = str_replace( 'blograzzi_settings[', '', str_replace( ']', '', $setting ) ); $blograzzi_settings[$setting] = $value; } } if ( ! is_array( $blograzzi_settings['widget_hooks'] ) ) $blograzzi_settings['widget_hooks'] = explode( ',', $blograzzi_settings['widget_hooks'] ); if ( ! is_array( $blograzzi_settings['social_profiles'] ) ) $blograzzi_settings['social_profiles'] = json_decode( $blograzzi_settings['social_profiles'], true ); } return $blograzzi_settings; } add_filter( 'blograzzi_settings', 'blograzzi_customizer_filter_settings', 999 ); /** * Register multiple similar options at once */ function blograzzi_add_customizer_options( $args = array(), $wp_customize ) { $defaults = array( 'type' => '', 'options' => '', 'section' => '', ); $args = wp_parse_args( $args, $defaults ); extract( $args, EXTR_SKIP ); if ( $type == 'checkbox' ) { foreach ( $options as $option => $option_args ) { $option_args['type'] = $type; $option_args['section'] = $section; $wp_customize->add_control( 'blograzzi_settings[' . $option . ']', $option_args ); } } if ( $type == 'colour' ) { foreach ( $options as $option => $option_args ) { $option_args['section'] = $section; $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'blograzzi_settings[' . $option . ']', $option_args ) ); } } }