get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; // Add color scheme setting and control. $wp_customize->add_setting( 'color_scheme', array( 'default' => 'default', 'sanitize_callback' => 'tokoonline_sanitize_color_scheme', 'transport' => 'postMessage', ) ); $wp_customize->add_setting( 'color_scheme_css', array( 'default' => '', 'sanitize_callback' => 'esc_html', 'transport' => 'postMessage', ) ); $wp_customize->add_control( 'color_scheme', array( 'label' => esc_html__( 'Base Color Scheme', 'tokoonline' ), 'section' => 'colors', 'type' => 'select', 'choices' => tokoonline_get_color_scheme_choices(), 'priority' => 1, ) ); // Add custom header and sidebar text color setting and control. $wp_customize->add_setting( 'sidebar_textcolor', array( 'default' => $color_scheme[4], 'sanitize_callback' => 'sanitize_hex_color', 'transport' => 'postMessage', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'sidebar_textcolor', array( 'label' => esc_html__( 'Header and Sidebar Text Color', 'tokoonline' ), 'description' => esc_html__( 'Only applied to the sidebar on wider screens. On small screens the sidebar will become the header.', 'tokoonline' ), 'section' => 'colors', ) ) ); // Remove the core header textcolor control, as it shares the sidebar text color. $wp_customize->remove_control( 'header_textcolor' ); // Add custom header and sidebar background color setting and control. $wp_customize->add_setting( 'header_background_color', array( 'default' => $color_scheme[1], 'sanitize_callback' => 'sanitize_hex_color', 'transport' => 'postMessage', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_background_color', array( 'label' => esc_html__( 'Header and Sidebar Background Color', 'tokoonline' ), 'description' => esc_html__( 'Only applied to the sidebar on wider screens. On small screens the sidebar will become the header.', 'tokoonline' ), 'section' => 'colors', ) ) ); // Add an additional description to the header image section. $wp_customize->get_section( 'header_image' )->description = esc_html__( 'Only applied to the sidebar on wide screens. On small screens it will be applied to the header.', 'tokoonline' ); } add_action( 'customize_register', 'tokoonline_customize_register', 11 ); /** * Register color schemes for Tokoonline. * * @since Tokoonline 1.0 * * @return array An associative array of color scheme options. */ function tokoonline_get_color_schemes() { return apply_filters( 'tokoonline_color_schemes', array( 'default' => array( 'label' => esc_html__( 'Default', 'tokoonline' ), 'colors' => array( '#f1f1f1', '#ffffff', '#ffffff', '#333333', '#333333', '#f7f7f7', ), ), 'dark' => array( 'label' => esc_html__( 'Dark', 'tokoonline' ), 'colors' => array( '#111111', '#202020', '#202020', '#bebebe', '#bebebe', '#1b1b1b', ), ), 'yellow' => array( 'label' => esc_html__( 'Yellow', 'tokoonline' ), 'colors' => array( '#f4ca16', '#ffdf00', '#ffffff', '#111111', '#111111', '#f1f1f1', ), ), 'pink' => array( 'label' => esc_html__( 'Pink', 'tokoonline' ), 'colors' => array( '#ffe5d1', '#e53b51', '#ffffff', '#352712', '#ffffff', '#f1f1f1', ), ), 'purple' => array( 'label' => esc_html__( 'Purple', 'tokoonline' ), 'colors' => array( '#674970', '#2e2256', '#ffffff', '#2e2256', '#ffffff', '#f1f1f1', ), ), 'blue' => array( 'label' => esc_html__( 'Blue', 'tokoonline' ), 'colors' => array( '#e9f2f9', '#55c3dc', '#ffffff', '#22313f', '#ffffff', '#f1f1f1', ), ), ) ); } /** * Returns an array of either the current or default color scheme hex values. * * @since Tokoonline 1.0 * * @return array */ function tokoonline_get_color_scheme() { $color_scheme_option = get_theme_mod( 'color_scheme', 'default' ); $color_schemes = tokoonline_get_color_schemes(); if ( array_key_exists( $color_scheme_option, $color_schemes ) ) { return $color_schemes[ $color_scheme_option ]['colors']; } return $color_schemes['default']['colors']; } /** * Returns an array of color scheme choices registered for Tokoonline. * * @since Tokoonline 1.0 * * @return array */ function tokoonline_get_color_scheme_choices() { $color_schemes = tokoonline_get_color_schemes(); $color_scheme_control_options = array(); foreach ( $color_schemes as $color_scheme => $value ) { $color_scheme_control_options[ $color_scheme ] = $value['label']; } return $color_scheme_control_options; } /** * Sanitization callback for color schemes. * * @since Tokoonline 1.0 * * @param string $value Color scheme name value. * * @return string Color scheme name. */ function tokoonline_sanitize_color_scheme( $value ) { $color_schemes = tokoonline_get_color_scheme_choices(); if ( ! array_key_exists( $value, $color_schemes ) ) { $value = 'default'; } return $value; } /** * Enqueues front-end CSS for color scheme. * * @since Tokoonline 1.0 */ function tokoonline_color_scheme_css() { $color_scheme_option = get_theme_mod( 'color_scheme', 'default' ); $color_scheme_css = get_theme_mod( 'color_scheme_css', '' ); // Don't do anything if the default color scheme is selected. if ( 'default' === $color_scheme_option || empty( $color_scheme_css ) ) { return; } wp_add_inline_style( 'tokoonline-style', $color_scheme_css ); } add_action( 'wp_enqueue_scripts', 'tokoonline_color_scheme_css' ); /** * Binds JS listener to make Customizer color_scheme control. * Passes color scheme data as colorScheme global. * * @since Tokoonline 1.0 */ function tokoonline_customize_control_js() { wp_enqueue_script( 'color-scheme-control', get_template_directory_uri() . '/js/color-scheme-control.js', array( 'customize-controls', 'iris', 'underscore', 'wp-util' ), '', true ); wp_localize_script( 'color-scheme-control', 'colorScheme', tokoonline_get_color_schemes() ); } add_action( 'customize_controls_enqueue_scripts', 'tokoonline_customize_control_js' ); /** * Binds JS handlers to make the Customizer preview reload changes asynchronously. * * @since Tokoonline 1.0 */ function tokoonline_customize_preview_js() { wp_enqueue_script( 'tokoonline-customize-preview', get_template_directory_uri() . '/js/customize-preview.js', array( 'customize-preview' ), '20141029', true ); } add_action( 'customize_preview_init', 'tokoonline_customize_preview_js' ); /** * Output an Underscore template for generating CSS for the color scheme. * * The template generates the css dynamically for instant display in the Customizer preview, * and to be saved in a `theme_mod` for display on the front-end. * * @since Tokoonline 1.0 */ function tokoonline_color_scheme_css_template() { ?>