Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

_s: Update Custom Header Code. fixes #1212

* Use WordPress 3.4's registration method providing backward compatibility for previous versions.
* Implement shiv for get_custom_header(). props @obenland
* Allow all custom header args to be filtered via child theme/plugin.
* Update example code in DocBlock to use get_custom_header().



git-svn-id: https://wpcom-themes.svn.automattic.com/_s/@9484 d957f892-c61d-0410-b221-f235e6eecf30
  • Loading branch information...
commit 966679f25bdca86165c8b64f0364a461fc83052f 1 parent 2cd6317
@mfields mfields authored ianstewart committed
Showing with 64 additions and 16 deletions.
  1. +64 −16 inc/custom-header.php
View
80 inc/custom-header.php
@@ -8,7 +8,7 @@
<?php $header_image = get_header_image();
if ( ! empty( $header_image ) ) { ?>
<a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
- <img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
+ <img src="<?php header_image(); ?>" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" />
</a>
<?php } // if ( ! empty( $header_image ) ) ?>
@@ -17,30 +17,78 @@
* @since _s 1.0
*/
+/**
+ * Setup the WordPress core custom header feature.
+ *
+ * Use add_theme_support to register support for WordPress 3.4+
+ * as well as provide backward compatibility for previous versions.
+ * Use feature detection of wp_get_theme() which was introduced
+ * in WordPress 3.4.
+ *
+ * @uses _s_header_style()
+ * @uses _s_admin_header_style()
+ * @uses _s_admin_header_image()
+ *
+ * @package _s
+ */
function _s_custom_header_setup() {
- // The default header text color
- define( 'HEADER_TEXTCOLOR', '000' );
+ $args = array(
+ 'default-image' => '',
+ 'default-text-color' => '000',
+ 'width' => 1000,
+ 'height' => 250,
+ 'flex-height' => true,
+ 'wp-head-callback' => '_s_header_style',
+ 'admin-head-callback' => '_s_admin_header_style',
+ 'admin-preview-callback' => '_s_admin_header_image',
+ );
- // By leaving empty, we allow for random image rotation.
- define( 'HEADER_IMAGE', '' );
+ $args = apply_filters( '_s_custom_header_args', $args );
- // The height and width of your custom header.
- // Add a filter to _s_header_image_width and _s_header_image_height to change these values.
- define( 'HEADER_IMAGE_WIDTH', apply_filters( '_s_header_image_width', 1000 ) );
- define( 'HEADER_IMAGE_HEIGHT', apply_filters( '_s_header_image_height', 250 ) );
+ if ( function_exists( 'wp_get_theme' ) ) {
+ add_theme_support( 'custom-header', $args );
+ } else {
+ // Compat: Versions of WordPress prior to 3.4.
+ define( 'HEADER_TEXTCOLOR', $args['default-text-color'] );
+ define( 'HEADER_IMAGE', $args['default-image'] );
+ define( 'HEADER_IMAGE_WIDTH', $args['width'] );
+ define( 'HEADER_IMAGE_HEIGHT', $args['height'] );
+ add_custom_image_header( $args['wp-head-callback'], $args['admin-head-callback'], $args['admin-preview-callback'] );
+ }
+}
+add_action( 'after_setup_theme', '_s_custom_header_setup' );
- // Turn on random header image rotation by default.
- add_theme_support( 'custom-header', array( 'random-default' => true ) );
+/**
+ * Shiv for get_custom_header().
+ *
+ * get_custom_header() was introduced to WordPress
+ * in version 3.4. To provide backward compatibility
+ * with previous versions, we will define our own version
+ * of this function.
+ *
+ * @return stdClass All properties represent attributes of the curent header image.
+ *
+ * @package _s
+ * @since _s 1.1
+ */
- // Add a way for the custom header to be styled in the admin panel that controls custom headers
- add_custom_image_header( '_s_header_style', '_s_admin_header_style', '_s_admin_header_image' );
+if ( ! function_exists( 'get_custom_header' ) ) {
+ function get_custom_header() {
+ return (object) array(
+ 'url' => get_header_image(),
+ 'thumbnail_url' => get_header_image(),
+ 'width' => HEADER_IMAGE_WIDTH,
+ 'height' => HEADER_IMAGE_HEIGHT,
+ );
+ }
}
-add_action( 'after_setup_theme', '_s_custom_header_setup' );
if ( ! function_exists( '_s_header_style' ) ) :
/**
* Styles the header image and text displayed on the blog
*
+ * @see _s_custom_header_setup().
+ *
* @since _s 1.0
*/
function _s_header_style() {
@@ -80,7 +128,7 @@ function _s_header_style() {
/**
* Styles the header image displayed on the Appearance > Header admin panel.
*
- * Referenced via add_custom_image_header() in _s_setup().
+ * @see _s_custom_header_setup().
*
* @since _s 1.0
*/
@@ -110,7 +158,7 @@ function _s_admin_header_style() {
/**
* Custom header image markup displayed on the Appearance > Header admin panel.
*
- * Referenced via add_custom_image_header() in _s_setup().
+ * @see _s_custom_header_setup().
*
* @since _s 1.0
*/

2 comments on commit 966679f

@obenland
Owner

Wow, this is awesome! Thx!

@mfields

@obenland Thanks for the example code! I was thinking in a totally different direction until I saw your post on the WPTRT mailing list. Good stuff :)

Please sign in to comment.
Something went wrong with that request. Please try again.