WordPress.org

Make WordPress Core

Ticket #15149: image-intermediate-size-url-patch.diff

File image-intermediate-size-url-patch.diff, 3.4 KB (added by whoismanu, 4 years ago)
  • wp-includes/media.php

     
    144144 
    145145        // try for a new style intermediate size 
    146146        if ( $intermediate = image_get_intermediate_size($id, $size) ) { 
    147                 $img_url = str_replace(basename($img_url), $intermediate['file'], $img_url); 
     147                $img_url = $intermediate['url']; 
    148148                $width = $intermediate['width']; 
    149149                $height = $intermediate['height']; 
    150150                $is_intermediate = true; 
     
    523523function image_get_intermediate_size($post_id, $size='thumbnail') { 
    524524        if ( !is_array( $imagedata = wp_get_attachment_metadata( $post_id ) ) ) 
    525525                return false; 
     526                 
     527        $file_url = wp_get_attachment_url($post_id); 
    526528 
    527529        // get the best one for a specified set of dimensions 
    528530        if ( is_array($size) && !empty($imagedata['sizes']) ) { 
     
    530532                        // already cropped to width or height; so use this size 
    531533                        if ( ( $data['width'] == $size[0] && $data['height'] <= $size[1] ) || ( $data['height'] == $size[1] && $data['width'] <= $size[0] ) ) { 
    532534                                $file = $data['file']; 
     535                                if(!empty($data['path'])) $path = $data['path']; 
     536                                if(!empty($data['url'])) $url = $data['url']; 
    533537                                list($width, $height) = image_constrain_size_for_editor( $data['width'], $data['height'], $size ); 
    534                                 return compact( 'file', 'width', 'height' ); 
     538                                return image_add_path_and_url_to_meta($file_url, $imagedata['file'], compact( 'file', 'width', 'height' , 'path', 'url')); 
    535539                        } 
    536540                        // add to lookup table: area => size 
    537541                        $areas[$data['width'] * $data['height']] = $_size; 
     
    550554                                                continue; 
    551555                                        // If we're still here, then we're going to use this size 
    552556                                        $file = $data['file']; 
     557                                        if(!empty($data['path'])) $path = $data['path']; 
     558                                        if(!empty($data['url'])) $url = $data['url']; 
    553559                                        list($width, $height) = image_constrain_size_for_editor( $data['width'], $data['height'], $size ); 
    554                                         return compact( 'file', 'width', 'height' ); 
     560                                        return image_add_path_and_url_to_meta($file_url, $imagedata['file'], compact( 'file', 'width', 'height' , 'path', 'url')); 
    555561                                } 
    556562                        } 
    557563                } 
     
    561567                return false; 
    562568 
    563569        $data = $imagedata['sizes'][$size]; 
    564         // include the full filesystem path of the intermediate file 
    565         if ( empty($data['path']) && !empty($data['file']) ) { 
    566                 $file_url = wp_get_attachment_url($post_id); 
    567                 $data['path'] = path_join( dirname($imagedata['file']), $data['file'] ); 
     570        return image_add_path_and_url_to_meta($file_url, $imagedata['file'], $data); 
     571} 
     572 
     573// include the full filesystem path of the intermediate file 
     574function image_add_path_and_url_to_meta($file_url, $file, $data){ 
     575        if ( empty($data['path']) && !empty($data['file']) ) 
     576                $data['path'] = path_join( dirname($file), $data['file'] ); 
     577        if ( empty($data['url']) && !empty($data['file']) ) 
    568578                $data['url'] = path_join( dirname($file_url), $data['file'] ); 
    569         } 
    570579        return $data; 
    571580} 
    572581 
  • wp-admin/includes/image-edit.php

     
    202202 
    203203        if ( $filepath && file_exists($filepath) ) { 
    204204                if ( 'full' != $size && ( $data = image_get_intermediate_size($post_id, $size) ) ) 
    205                         $filepath = path_join( dirname($filepath), $data['file'] ); 
     205                        $filepath = $data['path']; 
    206206        } elseif ( WP_Http_Fopen::test() ) { 
    207207                $filepath = wp_get_attachment_url($post_id); 
    208208        }