WordPress.org

Make WordPress Core

Ticket #6008: custom-header.diff

File custom-header.diff, 2.7 KB (added by spikeyslam, 7 years ago)
  • wp-admin/custom-header.php

     
    211211                die( $file['error'] ); 
    212212 
    213213                $url = $file['url']; 
     214                $type = $file['type']; 
    214215                $file = $file['file']; 
    215216                $filename = basename($file); 
    216217 
     
    218219                $object = array( 
    219220                'post_title' => $filename, 
    220221                'post_content' => $url, 
    221                 'post_mime_type' => 'import', 
     222                'post_mime_type' => $type, 
    222223                'guid' => $url); 
    223224 
    224225                // Save the data 
     
    227228                list($width, $height, $type, $attr) = getimagesize( $file ); 
    228229 
    229230                if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) { 
     231                        // Add the meta-data 
     232                        wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); 
     233 
    230234                        set_theme_mod('header_image', clean_url($url)); 
    231235                        do_action('wp_create_file_in_uploads', $file, $id); // For replication 
    232236                        return $this->finished(); 
     
    279283                        $_POST['height'] = $_POST['height'] * $_POST['oitar']; 
    280284                } 
    281285 
    282                 $header = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); 
    283                 $header = apply_filters('wp_create_file_in_uploads', $header); // For replication 
     286                $original = get_attached_file( $_POST['attachment_id'] ); 
    284287 
     288                $cropped = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); 
     289                $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $_POST['attachment_id']); // For replication 
     290 
    285291                $parent = get_post($_POST['attachment_id']); 
    286  
    287292                $parent_url = $parent->guid; 
     293                $url = str_replace(basename($parent_url), basename($cropped), $parent_url); 
    288294 
    289                 $url = str_replace(basename($parent_url), basename($header), $parent_url); 
     295                // Construct the object array 
     296                $object = array( 
     297                        'ID' => $_POST['attachment_id'], 
     298                        'post_title' => basename($cropped), 
     299                        'post_content' => $url, 
     300                        'post_mime_type' => 'image/jpeg', 
     301                        'guid' => $url 
     302                ); 
    290303 
     304                // Update the attachment 
     305                wp_insert_attachment($object, $cropped); 
     306                wp_update_attachment_metadata( $_POST['attachment_id'], wp_generate_attachment_metadata( $_POST['attachment_id'], $cropped ) ); 
     307 
    291308                set_theme_mod('header_image', $url); 
    292309 
    293310                // cleanup 
    294                 $file = get_attached_file( $_POST['attachment_id'] ); 
    295                 $medium = str_replace(basename($file), 'midsize-'.basename($file), $file); 
     311                $medium = str_replace(basename($original), 'midsize-'.basename($original), $original); 
    296312                @unlink( apply_filters( 'wp_delete_file', $medium ) ); 
    297                 wp_delete_attachment( $_POST['attachment_id'] ); 
     313                @unlink( apply_filters( 'wp_delete_file', $original ) ); 
    298314 
    299315                return $this->finished(); 
    300316        }