Make WordPress Core

Changeset 27849


Ignore:
Timestamp:
03/29/2014 10:52:17 AM (11 years ago)
Author:
nacin
Message:

Custom Headers: Simplify and consolidate the querying of custom headers for the customizer.

props mcsf.
see #21785.

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/custom-header.php

    r27497 r27849  
    4141     * @access private
    4242     */
    43     var $default_headers = array();
     43    var $default_headers;
    4444
    4545    /**
     
    255255            return;
    256256
     257        if ( is_array( $this->default_headers ) ) {
     258            return;
     259        }
     260
    257261        $this->default_headers = $_wp_default_headers;
    258262        $template_directory_uri = get_template_directory_uri();
     
    262266            $this->default_headers[$header]['thumbnail_url'] =  sprintf( $this->default_headers[$header]['thumbnail_url'], $template_directory_uri, $stylesheet_directory_uri );
    263267        }
    264 
    265268    }
    266269
     
    12291232        update_post_meta( $attachment_id, $key, time() );
    12301233    }
     1234
     1235    public function get_default_header_images() {
     1236        $this->process_default_headers();
     1237
     1238        // Get the default image if there is one.
     1239        $default = get_theme_support( 'custom-header', 'default-image' );
     1240
     1241        if ( ! $default ) { // If not,
     1242            return $this->default_headers; // easy peasy.
     1243        }
     1244
     1245        $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() );
     1246        $already_has_default = false;
     1247
     1248        foreach ( $this->default_headers as $k => $h ) {
     1249            if ( $h['url'] === $default ) {
     1250                $already_has_default = true;
     1251                break;
     1252            }
     1253        }
     1254
     1255        if ( $already_has_default ) {
     1256            return $this->default_headers;
     1257        }
     1258
     1259        // If the one true image isn't included in the default set, prepend it.
     1260        $header_images = array();
     1261        $header_images['default'] = array(
     1262            'url'           => $default,
     1263            'thumbnail_url' => $default,
     1264            'description'   => 'Default'
     1265        );
     1266
     1267        // The rest of the set comes after.
     1268        $header_images = array_merge( $header_images, $this->default_headers );
     1269        return $header_images;
     1270    }
     1271
     1272    public function get_uploaded_header_images() {
     1273        $header_images = get_uploaded_header_images();
     1274        $timestamp_key = '_wp_attachment_custom_header_last_used_' . get_stylesheet();
     1275
     1276        foreach ( $header_images as &$header_image ) {
     1277            $header_image['timestamp'] = get_post_meta( $header_image['attachment_id'], $timestamp_key, true );
     1278        }
     1279
     1280        return $header_images;
     1281    }
    12311282}
  • trunk/src/wp-includes/class-wp-customize-control.php

    r27816 r27849  
    756756    }
    757757
    758     public function get_default_header_images() {
    759         global $custom_image_header;
    760 
    761         // Get *the* default image if there is one
    762         $default = get_theme_support( 'custom-header', 'default-image' );
    763 
    764         if ( ! $default ) { // If not,
    765             return $custom_image_header->default_headers; // easy peasy.
    766         }
    767 
    768         $default = sprintf( $default,
    769             get_template_directory_uri(),
    770             get_stylesheet_directory_uri() );
    771 
    772         $header_images = array();
    773         $already_has_default = false;
    774 
    775         // Get the whole set of default images
    776         $default_header_images = $custom_image_header->default_headers;
    777         foreach ( $default_header_images as $k => $h ) {
    778             if ( $h['url'] == $default ) {
    779                 $already_has_default = true;
    780                 break;
    781             }
    782         }
    783 
    784         // If *the one true image* isn't included in the default set, add it in
    785         // first position
    786         if ( ! $already_has_default ) {
    787             $header_images['default'] = array(
    788                 'url' => $default,
    789                 'thumbnail_url' => $default,
    790                 'description' => 'Default'
    791             );
    792         }
    793 
    794         // The rest of the set comes after
    795         $header_images = array_merge( $header_images, $default_header_images );
    796 
    797         return $header_images;
    798     }
    799 
    800     public function get_uploaded_header_images() {
    801         $key = '_wp_attachment_custom_header_last_used_' . get_stylesheet();
    802         $header_images = array();
    803 
    804         $headers_not_dated = get_posts( array(
    805             'post_type' => 'attachment',
    806             'meta_key' => '_wp_attachment_is_custom_header',
    807             'meta_value' => get_option('stylesheet'),
    808             'orderby' => 'none',
    809             'nopaging' => true,
    810             'meta_query' => array(
    811                 array(
    812                     'key' => '_wp_attachment_is_custom_header',
    813                     'value' => get_option( 'stylesheet' ),
    814                     'compare' => 'LIKE'
    815                 ),
    816                 array(
    817                     'key' => $key,
    818                     'value' => 'this string must not be empty',
    819                     'compare' => 'NOT EXISTS'
    820                 ),
    821             )
    822         ) );
    823 
    824         $headers_dated = get_posts( array(
    825             'post_type' => 'attachment',
    826             'meta_key' => $key,
    827             'orderby' => 'meta_value_num',
    828             'order' => 'DESC',
    829             'nopaging' => true,
    830             'meta_query' => array(
    831                 array(
    832                     'key' => '_wp_attachment_is_custom_header',
    833                     'value' => get_option( 'stylesheet' ),
    834                     'compare' => 'LIKE'
    835                 ),
    836             ),
    837         ) );
    838 
    839         $limit = apply_filters( 'custom_header_uploaded_limit', 15 );
    840         $headers = array_merge( $headers_dated, $headers_not_dated );
    841         $headers = array_slice( $headers, 0, $limit );
    842 
    843         foreach ( (array) $headers as $header ) {
    844             $url = esc_url_raw( $header->guid );
    845             $header_data = wp_get_attachment_metadata( $header->ID );
    846             $timestamp = get_post_meta( $header->ID,
    847                 '_wp_attachment_custom_header_last_used_' . get_stylesheet(),
    848                 true );
    849 
    850             $h = array(
    851                 'attachment_id' => $header->ID,
    852                 'url'           => $url,
    853                 'thumbnail_url' => $url,
    854                 'timestamp'     => $timestamp ? $timestamp : 0,
    855             );
    856 
    857             if ( isset( $header_data['width'] ) ) {
    858                 $h['width'] = $header_data['width'];
    859             }
    860             if ( isset( $header_data['height'] ) ) {
    861                 $h['height'] = $header_data['height'];
    862             }
    863 
    864             $header_images[] = $h;
    865         }
    866 
    867         return $header_images;
    868     }
    869 
    870758    public function prepare_control() {
    871759        global $custom_image_header;
     
    876764        // Process default headers and uploaded headers.
    877765        $custom_image_header->process_default_headers();
    878         $this->default_headers = $this->get_default_header_images();
    879         $this->uploaded_headers = $this->get_uploaded_header_images();
     766        $this->default_headers = $custom_image_header->get_default_header_images();
     767        $this->uploaded_headers = $custom_image_header->get_uploaded_header_images();
    880768    }
    881769
Note: See TracChangeset for help on using the changeset viewer.