WordPress/wp-content/themes/twentythirteen/inc/custom-header.php
Gary Pendergast aaf99e6913 Code is Poetry.
WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.


Built from https://develop.svn.wordpress.org/trunk@42343


git-svn-id: http://core.svn.wordpress.org/trunk@42172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-30 23:11:00 +00:00

237 lines
6.5 KiB
PHP

<?php
/**
* Implement a custom header for Twenty Thirteen
*
* @link https://codex.wordpress.org/Custom_Headers
*
* @package WordPress
* @subpackage Twenty_Thirteen
* @since Twenty Thirteen 1.0
*/
/**
* Set up the WordPress core custom header arguments and settings.
*
* @uses add_theme_support() to register support for 3.4 and up.
* @uses twentythirteen_header_style() to style front end.
* @uses twentythirteen_admin_header_style() to style wp-admin form.
* @uses twentythirteen_admin_header_image() to add custom markup to wp-admin form.
* @uses register_default_headers() to set up the bundled header images.
*
* @since Twenty Thirteen 1.0
*/
function twentythirteen_custom_header_setup() {
$args = array(
// Text color and image (empty to use none).
'default-text-color' => '220e10',
'default-image' => '%s/images/headers/circle.png',
// Set height and width, with a maximum value for the width.
'height' => 230,
'width' => 1600,
// Callbacks for styling the header and the admin preview.
'wp-head-callback' => 'twentythirteen_header_style',
'admin-head-callback' => 'twentythirteen_admin_header_style',
'admin-preview-callback' => 'twentythirteen_admin_header_image',
);
add_theme_support( 'custom-header', $args );
/*
* Default custom headers packaged with the theme.
* %s is a placeholder for the theme template directory URI.
*/
register_default_headers(
array(
'circle' => array(
'url' => '%s/images/headers/circle.png',
'thumbnail_url' => '%s/images/headers/circle-thumbnail.png',
'description' => _x( 'Circle', 'header image description', 'twentythirteen' ),
),
'diamond' => array(
'url' => '%s/images/headers/diamond.png',
'thumbnail_url' => '%s/images/headers/diamond-thumbnail.png',
'description' => _x( 'Diamond', 'header image description', 'twentythirteen' ),
),
'star' => array(
'url' => '%s/images/headers/star.png',
'thumbnail_url' => '%s/images/headers/star-thumbnail.png',
'description' => _x( 'Star', 'header image description', 'twentythirteen' ),
),
)
);
}
add_action( 'after_setup_theme', 'twentythirteen_custom_header_setup', 11 );
/**
* Load our special font CSS files.
*
* @since Twenty Thirteen 1.0
*/
function twentythirteen_custom_header_fonts() {
// Add Source Sans Pro and Bitter fonts.
wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null );
// Add Genericons font.
wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' );
}
add_action( 'admin_print_styles-appearance_page_custom-header', 'twentythirteen_custom_header_fonts' );
/**
* Style the header text displayed on the blog.
*
* get_header_textcolor() options: Hide text (returns 'blank'), or any hex value.
*
* @since Twenty Thirteen 1.0
*/
function twentythirteen_header_style() {
$header_image = get_header_image();
$text_color = get_header_textcolor();
// If no custom options for text are set, let's bail.
if ( empty( $header_image ) && $text_color == get_theme_support( 'custom-header', 'default-text-color' ) ) {
return;
}
// If we get this far, we have custom styles.
?>
<style type="text/css" id="twentythirteen-header-css">
<?php
if ( ! empty( $header_image ) ) :
?>
.site-header {
background: url(<?php header_image(); ?>) no-repeat scroll top;
background-size: 1600px auto;
}
@media (max-width: 767px) {
.site-header {
background-size: 768px auto;
}
}
@media (max-width: 359px) {
.site-header {
background-size: 360px auto;
}
}
<?php
endif;
// Has the text been hidden?
if ( ! display_header_text() ) :
?>
.site-title,
.site-description {
position: absolute;
clip: rect(1px 1px 1px 1px); /* IE7 */
clip: rect(1px, 1px, 1px, 1px);
}
<?php
if ( empty( $header_image ) ) :
?>
.site-header .home-link {
min-height: 0;
}
<?php
endif;
// If the user has set a custom color for the text, use that.
elseif ( $text_color != get_theme_support( 'custom-header', 'default-text-color' ) ) :
?>
.site-title,
.site-description {
color: #<?php echo esc_attr( $text_color ); ?>;
}
<?php endif; ?>
</style>
<?php
}
/**
* Style the header image displayed on the Appearance > Header admin panel.
*
* @since Twenty Thirteen 1.0
*/
function twentythirteen_admin_header_style() {
$header_image = get_header_image();
?>
<style type="text/css" id="twentythirteen-admin-header-css">
.appearance_page_custom-header #headimg {
border: none;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
<?php
if ( ! empty( $header_image ) ) {
echo 'background: url(' . esc_url( $header_image ) . ') no-repeat scroll top; background-size: 1600px auto;';
}
?>
padding: 0 20px;
}
#headimg .home-link {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0 auto;
max-width: 1040px;
<?php
if ( ! empty( $header_image ) || display_header_text() ) {
echo 'min-height: 230px;';
}
?>
width: 100%;
}
<?php if ( ! display_header_text() ) : ?>
#headimg h1,
#headimg h2 {
position: absolute !important;
clip: rect(1px 1px 1px 1px); /* IE7 */
clip: rect(1px, 1px, 1px, 1px);
}
<?php endif; ?>
#headimg h1 {
font: bold 60px/1 Bitter, Georgia, serif;
margin: 0;
padding: 58px 0 10px;
}
#headimg h1 a {
text-decoration: none;
}
#headimg h1 a:hover {
text-decoration: underline;
}
#headimg h2 {
font: 200 italic 24px "Source Sans Pro", Helvetica, sans-serif;
margin: 0;
text-shadow: none;
}
.default-header img {
max-width: 230px;
width: auto;
}
</style>
<?php
}
/**
* Output markup to be displayed on the Appearance > Header admin panel.
*
* This callback overrides the default markup displayed there.
*
* @since Twenty Thirteen 1.0
*/
function twentythirteen_admin_header_image() {
$style = 'color: #' . get_header_textcolor() . ';';
if ( ! display_header_text() ) {
$style = 'display: none;';
}
?>
<div id="headimg" style="background: url(<?php echo esc_url( get_header_image() ); ?>) no-repeat scroll top; background-size: 1600px auto;">
<div class="home-link">
<h1 class="displaying-header-text"><a id="name" style="<?php echo esc_attr( $style ); ?>" onclick="return false;" href="#" tabindex="-1"><?php bloginfo( 'name' ); ?></a></h1>
<h2 id="desc" class="displaying-header-text" style="<?php echo esc_attr( $style ); ?>"><?php bloginfo( 'description' ); ?></h2>
</div>
</div>
<?php
}