WordPress.org

Make WordPress Core

Ticket #35030: 35030.2.patch

File 35030.2.patch, 2.0 KB (added by azaozz, 6 years ago)
  • src/wp-includes/media.php

     
    10621062         */
    10631063        $src_matched = false;
    10641064
     1065        $is_iOS = ( wp_is_mobile() && strpos( $_SERVER['HTTP_USER_AGENT'], 'like Mac OS X' ) !== false );
     1066
    10651067        /*
    10661068         * Loop through available images. Only use images that are resized
    10671069         * versions of the same edit.
    10681070         */
    10691071        foreach ( $image_sizes as $image ) {
     1072                $is_src = false;
    10701073
    10711074                // Check if image meta isn't corrupted.
    10721075                if ( ! is_array( $image ) ) {
     
    10751078
    10761079                // If the file name is part of the `src`, we've confirmed a match.
    10771080                if ( ! $src_matched && false !== strpos( $image_src, $dirname . $image['file'] ) ) {
    1078                         $src_matched = true;
     1081                        $src_matched = $is_src = true;
    10791082                }
    10801083
    10811084                // Filter out images that are from previous edits.
     
    10871090                 * Filter out images that are wider than '$max_srcset_image_width' unless
    10881091                 * that file is in the 'src' attribute.
    10891092                 */
    1090                 if ( $max_srcset_image_width && $image['width'] > $max_srcset_image_width &&
    1091                         false === strpos( $image_src, $image['file'] ) ) {
    1092 
     1093                if ( $max_srcset_image_width && $image['width'] > $max_srcset_image_width && ! $is_src ) {
    10931094                        continue;
    10941095                }
    10951096
     
    11091110                // If the image dimensions are within 1px of the expected size, use it.
    11101111                if ( abs( $constrained_size[0] - $expected_size[0] ) <= 1 && abs( $constrained_size[1] - $expected_size[1] ) <= 1 ) {
    11111112                        // Add the URL, descriptor, and value to the sources array to be returned.
    1112                         $sources[ $image['width'] ] = array(
     1113                        $source = array(
    11131114                                'url'        => $image_baseurl . $image['file'],
    11141115                                'descriptor' => 'w',
    11151116                                'value'      => $image['width'],
    11161117                        );
     1118
     1119                        // iOS 8 is buggy. Make sure the src URL is first in the srcset.
     1120                        if ( $is_iOS && $is_src ) {
     1121                                $sources = array_merge( array( $image['width'] => $source ), $sources );
     1122                        } else {
     1123                                $sources[ $image['width'] ] = $source;
     1124                        }
    11171125                }
    11181126        }
    11191127