Ticket #17240: 17240-random-2.diff
File 17240-random-2.diff, 4.6 KB (added by , 14 years ago) |
---|
-
wp-admin/custom-header.php
199 199 } 200 200 } 201 201 202 if ( isset( $_POST['default-header']) ) {202 if ( isset( $_POST['default-header'] ) ) { 203 203 check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); 204 204 $this->process_default_headers(); 205 if ( isset($this->default_headers[$_POST['default-header']]) ) 206 set_theme_mod('header_image', esc_url($this->default_headers[$_POST['default-header']]['url'])); 205 if ( 'random-image' == $_POST['default-header'] ) 206 set_theme_mod( 'header_image', 'random-image' ); 207 if ( isset( $this->default_headers[$_POST['default-header']] ) ) 208 set_theme_mod( 'header_image', esc_url( $this->default_headers[$_POST['default-header']]['url'] ) ); 207 209 } 208 210 } 209 211 … … 231 233 /** 232 234 * Display UI for selecting one of several default headers. 233 235 * 236 * Show the random image option if this theme has multiple header images. 237 * Random image option is on by default if no header has been set. 238 * 234 239 * @since 3.0.0 235 240 */ 236 241 function show_default_header_selector() { … … 240 245 $header_url = $header['url']; 241 246 $header_desc = $header['description']; 242 247 echo '<div class="default-header">'; 243 echo '<label><input name="default-header" type="radio" value="' . esc_attr( $header_key) . '" ' . checked($header_url, get_theme_mod( 'header_image' ), false) . ' />';244 echo '<img src="' . $header_thumbnail . '" alt="' . esc_attr( $header_desc) .'" title="' . esc_attr($header_desc) .'" /></label>';248 echo '<label><input name="default-header" type="radio" value="' . esc_attr( $header_key ) . '" ' . checked( $header_url, get_theme_mod( 'header_image' ), false ) . ' />'; 249 echo '<img src="' . $header_thumbnail . '" alt="' . esc_attr( $header_desc ) .'" title="' . esc_attr( $header_desc ) .'" /></label>'; 245 250 echo '</div>'; 246 251 } 252 if ( 0 < count( $this->default_headers ) ) { 253 echo '<div class="default-header">'; 254 echo '<label><input name="default-header" type="radio" value="random-image"' . checked( is_random_header_image(), true, false ) . ' />'; 255 echo __( '<strong>Random:</strong> Show a different image on each page.' ); 256 echo '</label>'; 257 echo '</div>'; 258 } 247 259 echo '<div class="clear"></div></div>'; 248 260 } 249 261 … … 496 508 </tr> 497 509 <?php endif; 498 510 499 if ( get_header_image() ) : ?>511 if ( get_header_image() && !is_random_header_image() ) : ?> 500 512 <tr valign="top"> 501 513 <th scope="row"><?php _e( 'Remove Image' ); ?></th> 502 514 <td> … … 506 518 </tr> 507 519 <?php endif; 508 520 509 if ( defined( 'HEADER_IMAGE' ) ) : ?>521 if ( defined( 'HEADER_IMAGE' ) && !is_random_header_image() ) : ?> 510 522 <tr valign="top"> 511 523 <th scope="row"><?php _e( 'Reset Image' ); ?></th> 512 524 <td> -
wp-includes/theme.php
1427 1427 */ 1428 1428 function get_header_image() { 1429 1429 $default = defined( 'HEADER_IMAGE' ) ? HEADER_IMAGE : ''; 1430 1431 1430 $url = get_theme_mod( 'header_image', $default ); 1432 1431 1432 if ( is_random_header_image() ) { 1433 $url = get_random_header_image(); 1434 } 1435 1433 1436 if ( is_ssl() ) 1434 1437 $url = str_replace( 'http://', 'https://', $url ); 1435 1438 else … … 1439 1442 } 1440 1443 1441 1444 /** 1445 * Get random header image from registered images in theme. 1446 * 1447 * @since 3.2 1448 * 1449 * @return string Path to header image 1450 */ 1451 function get_random_header_image() { 1452 global $_wp_default_headers; 1453 $header_url = ''; 1454 1455 if ( !isset( $_wp_default_headers ) || empty( $_wp_default_headers ) ) 1456 return $header_url; 1457 1458 if ( 0 < count( $_wp_default_headers ) ) { 1459 $random_image = array_rand( $_wp_default_headers ); 1460 $header_url = sprintf( $_wp_default_headers[$random_image]['url'], get_template_directory_uri(), get_stylesheet_directory_uri() ); 1461 } 1462 1463 return $header_url; 1464 } 1465 1466 /** 1467 * Check if random header image is in use. 1468 * 1469 * Always true if user expressly chooses the option in Appearance > Header. 1470 * Also true if theme has multiple header images registered and no specific header image is chosen. 1471 * 1472 * @since 3.2 1473 * @uses HEADER_IMAGE 1474 * 1475 * @return boolean 1476 */ 1477 function is_random_header_image() { 1478 $default = defined( 'HEADER_IMAGE' ) ? HEADER_IMAGE : ''; 1479 $header_image_mod = get_theme_mod( 'header_image', $default ); 1480 1481 if ( 'random-image' == $header_image_mod || ( '' != get_random_header_image() && empty( $header_image_mod ) ) ) 1482 return true; 1483 1484 return false; 1485 } 1486 1487 /** 1442 1488 * Display header image path. 1443 1489 * 1444 1490 * @since 2.1.0