Make WordPress Core


Ignore:
Timestamp:
11/18/2015 07:47:11 PM (10 years ago)
Author:
wonderboymusic
Message:

Media: when making images responsive, check if they already have a sizes attribute.

Adds unit test.

Props jaspermdegroot.
Fixes #34678.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/media.php

    r35672 r35678  
    12061206
    12071207    foreach( $images as $image ) {
    1208         if ( false === strpos( $image, ' srcset="' ) && preg_match( '/wp-image-([0-9]+)/i', $image, $class_id ) &&
     1208        if ( false === strpos( $image, ' srcset=' ) && preg_match( '/wp-image-([0-9]+)/i', $image, $class_id ) &&
    12091209            ( $attachment_id = absint( $class_id[1] ) ) ) {
    12101210
     
    13031303
    13041304    if ( $srcset ) {
    1305         $sizes = wp_calculate_image_sizes( $size_array, $image_src, $image_meta, $attachment_id );
     1305        // Check if there is already a 'sizes' attribute.
     1306        $sizes = strpos( $image, ' sizes=' );
     1307
     1308        if ( ! $sizes ) {
     1309            $sizes = wp_calculate_image_sizes( $size_array, $image_src, $image_meta, $attachment_id );
     1310        }
    13061311    }
    13071312
    13081313    if ( $srcset && $sizes ) {
    13091314        // Format the 'srcset' and 'sizes' string and escape attributes.
    1310         $srcset_and_sizes = sprintf( ' srcset="%s" sizes="%s"', esc_attr( $srcset ), esc_attr( $sizes ) );
     1315        $attr = sprintf( ' srcset="%s"', esc_attr( $srcset ) );
     1316
     1317        if ( is_string( $sizes ) ) {
     1318            $attr .= sprintf( ' sizes="%s"', esc_attr( $sizes ) );
     1319        }
    13111320
    13121321        // Add 'srcset' and 'sizes' attributes to the image markup.
    1313         $image = preg_replace( '/<img ([^>]+?)[\/ ]*>/', '<img $1' . $srcset_and_sizes . ' />', $image );
     1322        $image = preg_replace( '/<img ([^>]+?)[\/ ]*>/', '<img $1' . $attr . ' />', $image );
    13141323    }
    13151324
Note: See TracChangeset for help on using the changeset viewer.