381 lines
9.3 KiB
PHP
381 lines
9.3 KiB
PHP
<?php
|
|
/**
|
|
* Custom Header functionality for Twenty Fifteen
|
|
*
|
|
* @package WordPress
|
|
* @subpackage Twenty_Fifteen
|
|
* @since Twenty Fifteen 1.0
|
|
*/
|
|
|
|
/**
|
|
* Set up the WordPress core custom header feature.
|
|
*
|
|
* @uses twentyfifteen_header_style()
|
|
*/
|
|
function twentyfifteen_custom_header_setup() {
|
|
$color_scheme = twentyfifteen_get_color_scheme();
|
|
$default_text_color = trim( $color_scheme[4], '#' );
|
|
|
|
add_theme_support(
|
|
'custom-header',
|
|
/**
|
|
* Filters Twenty Fifteen custom-header support arguments.
|
|
*
|
|
* @since Twenty Fifteen 1.0
|
|
*
|
|
* @param array $args {
|
|
* An array of custom-header support arguments.
|
|
*
|
|
* @type string $default_text_color Default color of the header text.
|
|
* @type int $width Width in pixels of the custom header image. Default 954.
|
|
* @type int $height Height in pixels of the custom header image. Default 1300.
|
|
* @type string $wp-head-callback Callback function used to styles the header image and text
|
|
* displayed on the blog.
|
|
* }
|
|
*/
|
|
apply_filters(
|
|
'twentyfifteen_custom_header_args',
|
|
array(
|
|
'default-text-color' => $default_text_color,
|
|
'width' => 954,
|
|
'height' => 1300,
|
|
'wp-head-callback' => 'twentyfifteen_header_style',
|
|
)
|
|
)
|
|
);
|
|
}
|
|
add_action( 'after_setup_theme', 'twentyfifteen_custom_header_setup' );
|
|
|
|
/**
|
|
* Convert HEX to RGB.
|
|
*
|
|
* @since Twenty Fifteen 1.0
|
|
*
|
|
* @param string $color The original color, in 3- or 6-digit hexadecimal form.
|
|
* @return array Array containing RGB (red, green, and blue) values for the given
|
|
* HEX code, empty array otherwise.
|
|
*/
|
|
function twentyfifteen_hex2rgb( $color ) {
|
|
$color = trim( $color, '#' );
|
|
|
|
if ( strlen( $color ) == 3 ) {
|
|
$r = hexdec( substr( $color, 0, 1 ) . substr( $color, 0, 1 ) );
|
|
$g = hexdec( substr( $color, 1, 1 ) . substr( $color, 1, 1 ) );
|
|
$b = hexdec( substr( $color, 2, 1 ) . substr( $color, 2, 1 ) );
|
|
} elseif ( strlen( $color ) == 6 ) {
|
|
$r = hexdec( substr( $color, 0, 2 ) );
|
|
$g = hexdec( substr( $color, 2, 2 ) );
|
|
$b = hexdec( substr( $color, 4, 2 ) );
|
|
} else {
|
|
return array();
|
|
}
|
|
|
|
return array(
|
|
'red' => $r,
|
|
'green' => $g,
|
|
'blue' => $b,
|
|
);
|
|
}
|
|
|
|
if ( ! function_exists( 'twentyfifteen_header_style' ) ) :
|
|
/**
|
|
* Styles the header image and text displayed on the blog.
|
|
*
|
|
* @since Twenty Fifteen 1.0
|
|
*
|
|
* @see twentyfifteen_custom_header_setup()
|
|
*/
|
|
function twentyfifteen_header_style() {
|
|
$header_image = get_header_image();
|
|
|
|
// If no custom options for text are set, let's bail.
|
|
if ( empty( $header_image ) && display_header_text() ) {
|
|
return;
|
|
}
|
|
|
|
// If we get this far, we have custom styles. Let's do this.
|
|
?>
|
|
<style type="text/css" id="twentyfifteen-header-css">
|
|
<?php
|
|
// Short header for when there is no Custom Header and Header Text is hidden.
|
|
if ( empty( $header_image ) && ! display_header_text() ) :
|
|
?>
|
|
.site-header {
|
|
padding-top: 14px;
|
|
padding-bottom: 14px;
|
|
}
|
|
|
|
.site-branding {
|
|
min-height: 42px;
|
|
}
|
|
|
|
@media screen and (min-width: 46.25em) {
|
|
.site-header {
|
|
padding-top: 21px;
|
|
padding-bottom: 21px;
|
|
}
|
|
.site-branding {
|
|
min-height: 56px;
|
|
}
|
|
}
|
|
@media screen and (min-width: 55em) {
|
|
.site-header {
|
|
padding-top: 25px;
|
|
padding-bottom: 25px;
|
|
}
|
|
.site-branding {
|
|
min-height: 62px;
|
|
}
|
|
}
|
|
@media screen and (min-width: 59.6875em) {
|
|
.site-header {
|
|
padding-top: 0;
|
|
padding-bottom: 0;
|
|
}
|
|
.site-branding {
|
|
min-height: 0;
|
|
}
|
|
}
|
|
<?php
|
|
endif;
|
|
|
|
// Has a Custom Header been added?
|
|
if ( ! empty( $header_image ) ) :
|
|
?>
|
|
.site-header {
|
|
|
|
/*
|
|
* No shorthand so the Customizer can override individual properties.
|
|
* @see https://core.trac.wordpress.org/ticket/31460
|
|
*/
|
|
background-image: url(<?php header_image(); ?>);
|
|
background-repeat: no-repeat;
|
|
background-position: 50% 50%;
|
|
-webkit-background-size: cover;
|
|
-moz-background-size: cover;
|
|
-o-background-size: cover;
|
|
background-size: cover;
|
|
}
|
|
|
|
@media screen and (min-width: 59.6875em) {
|
|
body:before {
|
|
|
|
/*
|
|
* No shorthand so the Customizer can override individual properties.
|
|
* @see https://core.trac.wordpress.org/ticket/31460
|
|
*/
|
|
background-image: url(<?php header_image(); ?>);
|
|
background-repeat: no-repeat;
|
|
background-position: 100% 50%;
|
|
-webkit-background-size: cover;
|
|
-moz-background-size: cover;
|
|
-o-background-size: cover;
|
|
background-size: cover;
|
|
border-right: 0;
|
|
}
|
|
|
|
.site-header {
|
|
background: transparent;
|
|
}
|
|
}
|
|
<?php
|
|
endif;
|
|
|
|
// Has the text been hidden?
|
|
if ( ! display_header_text() ) :
|
|
?>
|
|
.site-title,
|
|
.site-description {
|
|
clip: rect(1px, 1px, 1px, 1px);
|
|
position: absolute;
|
|
}
|
|
<?php endif; ?>
|
|
</style>
|
|
<?php
|
|
}
|
|
endif; // twentyfifteen_header_style()
|
|
|
|
/**
|
|
* Enqueues front-end CSS for the header background color.
|
|
*
|
|
* @since Twenty Fifteen 1.0
|
|
*
|
|
* @see wp_add_inline_style()
|
|
*/
|
|
function twentyfifteen_header_background_color_css() {
|
|
$color_scheme = twentyfifteen_get_color_scheme();
|
|
$default_color = $color_scheme[1];
|
|
$header_background_color = get_theme_mod( 'header_background_color', $default_color );
|
|
|
|
// Don't do anything if the current color is the default.
|
|
if ( $header_background_color === $default_color ) {
|
|
return;
|
|
}
|
|
|
|
$css = '
|
|
/* Custom Header Background Color */
|
|
body:before,
|
|
.site-header {
|
|
background-color: %1$s;
|
|
}
|
|
|
|
@media screen and (min-width: 59.6875em) {
|
|
.site-header,
|
|
.secondary {
|
|
background-color: transparent;
|
|
}
|
|
|
|
.widget button,
|
|
.widget input[type="button"],
|
|
.widget input[type="reset"],
|
|
.widget input[type="submit"],
|
|
.widget_calendar tbody a,
|
|
.widget_calendar tbody a:hover,
|
|
.widget_calendar tbody a:focus {
|
|
color: %1$s;
|
|
}
|
|
}
|
|
';
|
|
|
|
wp_add_inline_style( 'twentyfifteen-style', sprintf( $css, $header_background_color ) );
|
|
}
|
|
add_action( 'wp_enqueue_scripts', 'twentyfifteen_header_background_color_css', 11 );
|
|
|
|
/**
|
|
* Enqueues front-end CSS for the sidebar text color.
|
|
*
|
|
* @since Twenty Fifteen 1.0
|
|
*/
|
|
function twentyfifteen_sidebar_text_color_css() {
|
|
$color_scheme = twentyfifteen_get_color_scheme();
|
|
$default_color = $color_scheme[4];
|
|
$sidebar_link_color = get_theme_mod( 'sidebar_textcolor', $default_color );
|
|
|
|
// Don't do anything if the current color is the default.
|
|
if ( $sidebar_link_color === $default_color ) {
|
|
return;
|
|
}
|
|
|
|
// If we get this far, we have custom styles. Let's do this.
|
|
$sidebar_link_color_rgb = twentyfifteen_hex2rgb( $sidebar_link_color );
|
|
$sidebar_text_color = vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.7)', $sidebar_link_color_rgb );
|
|
$sidebar_border_color = vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.1)', $sidebar_link_color_rgb );
|
|
$sidebar_border_focus_color = vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.3)', $sidebar_link_color_rgb );
|
|
|
|
$css = '
|
|
/* Custom Sidebar Text Color */
|
|
.site-title a,
|
|
.site-description,
|
|
.secondary-toggle:before {
|
|
color: %1$s;
|
|
}
|
|
|
|
.site-title a:hover,
|
|
.site-title a:focus {
|
|
color: %1$s; /* Fallback for IE7 and IE8 */
|
|
color: %2$s;
|
|
}
|
|
|
|
.secondary-toggle {
|
|
border-color: %1$s; /* Fallback for IE7 and IE8 */
|
|
border-color: %3$s;
|
|
}
|
|
|
|
.secondary-toggle:hover,
|
|
.secondary-toggle:focus {
|
|
border-color: %1$s; /* Fallback for IE7 and IE8 */
|
|
border-color: %4$s;
|
|
}
|
|
|
|
.site-title a {
|
|
outline-color: %1$s; /* Fallback for IE7 and IE8 */
|
|
outline-color: %4$s;
|
|
}
|
|
|
|
@media screen and (min-width: 59.6875em) {
|
|
.secondary a,
|
|
.dropdown-toggle:after,
|
|
.widget-title,
|
|
.widget blockquote cite,
|
|
.widget blockquote small {
|
|
color: %1$s;
|
|
}
|
|
|
|
.widget button,
|
|
.widget input[type="button"],
|
|
.widget input[type="reset"],
|
|
.widget input[type="submit"],
|
|
.widget_calendar tbody a {
|
|
background-color: %1$s;
|
|
}
|
|
|
|
.textwidget a {
|
|
border-color: %1$s;
|
|
}
|
|
|
|
.secondary a:hover,
|
|
.secondary a:focus,
|
|
.main-navigation .menu-item-description,
|
|
.widget,
|
|
.widget blockquote,
|
|
.widget .wp-caption-text,
|
|
.widget .gallery-caption {
|
|
color: %2$s;
|
|
}
|
|
|
|
.widget button:hover,
|
|
.widget button:focus,
|
|
.widget input[type="button"]:hover,
|
|
.widget input[type="button"]:focus,
|
|
.widget input[type="reset"]:hover,
|
|
.widget input[type="reset"]:focus,
|
|
.widget input[type="submit"]:hover,
|
|
.widget input[type="submit"]:focus,
|
|
.widget_calendar tbody a:hover,
|
|
.widget_calendar tbody a:focus {
|
|
background-color: %2$s;
|
|
}
|
|
|
|
.widget blockquote {
|
|
border-color: %2$s;
|
|
}
|
|
|
|
.main-navigation ul,
|
|
.main-navigation li,
|
|
.secondary-toggle,
|
|
.widget input,
|
|
.widget textarea,
|
|
.widget table,
|
|
.widget th,
|
|
.widget td,
|
|
.widget pre,
|
|
.widget li,
|
|
.widget_categories .children,
|
|
.widget_nav_menu .sub-menu,
|
|
.widget_pages .children,
|
|
.widget abbr[title] {
|
|
border-color: %3$s;
|
|
}
|
|
|
|
.dropdown-toggle:hover,
|
|
.dropdown-toggle:focus,
|
|
.widget hr {
|
|
background-color: %3$s;
|
|
}
|
|
|
|
.widget input:focus,
|
|
.widget textarea:focus {
|
|
border-color: %4$s;
|
|
}
|
|
|
|
.sidebar a:focus,
|
|
.dropdown-toggle:focus {
|
|
outline-color: %4$s;
|
|
}
|
|
}
|
|
';
|
|
|
|
wp_add_inline_style( 'twentyfifteen-style', sprintf( $css, $sidebar_link_color, $sidebar_text_color, $sidebar_border_color, $sidebar_border_focus_color ) );
|
|
}
|
|
add_action( 'wp_enqueue_scripts', 'twentyfifteen_sidebar_text_color_css', 11 );
|