get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; // Add the custom accent color setting and control. $wp_customize->add_setting( 'accent_color', array( 'default' => '#24890d', 'sanitize_callback' => 'twentyfourteen_generate_accent_colors', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'accent_color', array( 'label' => __( 'Accent Color', 'twentyfourteen' ), 'section' => 'colors', 'settings' => 'accent_color', ) ) ); } add_action( 'customize_register', 'twentyfourteen_customize_register' ); /** * Bind JS handlers to make Theme Customizer preview reload changes asynchronously. * * @since Twenty Fourteen 1.0 */ function twentyfourteen_customize_preview_js() { wp_enqueue_script( 'twentyfourteen_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20120827', true ); } add_action( 'customize_preview_init', 'twentyfourteen_customize_preview_js' ); /** * Generate two variants of the accent color, return the original, and * save the others as theme mods. * * @since Twenty Fourteen 1.0 * * @param string $color The original color. * @return string $color The original color, sanitized. */ function twentyfourteen_generate_accent_colors( $color ) { $color = sanitize_hex_color( $color ); set_theme_mod( 'accent_lighter', twentyfourteen_adjust_color( $color, 29 ) ); set_theme_mod( 'accent_much_lighter', twentyfourteen_adjust_color( $color, 49 ) ); return $color; } /** * Tweak the brightness of a color by adjusting the RGB values by the given interval. * * Use positive values of $steps to brighten the color and negative values to darken the color. * All three RGB values are modified by the specified steps, within the range of 0-255. The hue * is generally maintained unless the number of steps causes one value to be capped at 0 or 255. * * @since Twenty Fourteen 1.0 * * @param string $color The original color, in 3- or 6-digit hexadecimal form. * @param int $steps The number of steps to adjust the color by, in RGB units. * @return string $color The new color, in 6-digit hexadecimal form. */ function twentyfourteen_adjust_color( $color, $steps ) { // Convert shorthand to full hex. if ( strlen( $color ) == 3 ) { $color = str_repeat( substr( $color, 1, 1 ), 2 ) . str_repeat( substr( $color, 2, 1 ), 2 ) . str_repeat( substr( $color, 3, 1), 2 ); } // Convert hex to rgb. $rgb = array( hexdec( substr( $color, 1, 2 ) ), hexdec( substr( $color, 3, 2 ) ), hexdec( substr( $color, 5, 2 ) ) ); // Adjust color and switch back to hex. $hex = '#'; foreach ( $rgb as $c ) { $c += $steps; if ( $c > 255 ) $c = 255; elseif ( $c < 0 ) $c = 0; $hex .= str_pad( dechex( $c ), 2, '0', STR_PAD_LEFT); } return $hex; } /** * Output the CSS for the Theme Customizer options. * * @since Twenty Fourteen 1.0 * * @return void */ function twentyfourteen_customizer_styles() { $accent_color = get_theme_mod( 'accent_color' ); // Don't do anything if the current color is the default. if ( '#24890d' === $accent_color ) return; $accent_lighter = get_theme_mod( 'accent_lighter' ); $accent_much_lighter = get_theme_mod( 'accent_much_lighter' ); $css = '/* Custom accent color. */ a, .paging-navigation .page-numbers.current, .content-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link { color: ' . $accent_color . '; } button, .contributor-posts-link, input[type="button"], input[type="reset"], input[type="submit"], .search-toggle, .hentry .mejs-controls .mejs-time-rail .mejs-time-current, .widget_calendar tbody a { background-color: ' . $accent_color . '; } @media screen and (min-width: 782px) { .primary-navigation ul ul, .primary-navigation li:hover > a { background-color: ' . $accent_color . '; } } ::-moz-selection { background: ' . $accent_color . '; } ::selection { background: ' . $accent_color . '; } .paging-navigation .page-numbers.current { border-color: ' . $accent_color . '; } /* Generated variant of custom accent color: slightly lighter. */ button:hover, button:focus, .contributor-posts-link:hover, input[type="button"]:hover, input[type="button"]:focus, input[type="reset"]:hover, input[type="reset"]:focus, input[type="submit"]:hover, input[type="submit"]:focus, .search-toggle:hover, .search-toggle.active, .search-box, .primary-navigation ul ul a:hover, .widget_calendar tbody a:hover { background-color: ' . $accent_lighter . '; } /* Generated variant of custom accent color: much lighter. */ button:active, .contributor-posts-link:active, input[type="button"]:active, input[type="reset"]:active, input[type="submit"]:active, .page-links a:hover { background-color: ' . $accent_much_lighter . '; } a:hover, a:focus, a:active, .site-navigation .current_page_item > a, .site-navigation .current_page_ancestor > a, .site-navigation .current-menu-item > a, .site-navigation .current-menu-ancestor > a, .secondary-navigation a:hover, .entry-title a:hover, .cat-links a:hover, .post-navigation a:hover, .image-navigation a:hover, .comment-author a:hover, .comment-list .pingback a:hover, .comment-list .trackback a:hover, .comment-metadata a:hover, .footer-sidebar a:hover, .primary-sidebar a:hover, .content-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link:hover, .featured-content a:hover { color: ' . $accent_much_lighter . '; } .page-links a:hover, .paging-navigation a:hover { border-color: ' . $accent_much_lighter . '; }'; wp_add_inline_style( 'twentyfourteen-style', $css ); } add_action( 'wp_enqueue_scripts', 'twentyfourteen_customizer_styles' );