Make WordPress Core


Ignore:
Timestamp:
12/30/2015 12:05:07 AM (11 years ago)
Author:
azaozz
Message:

Responsive images: add compatibility for versions < 2.7 when the full image path was stored in the metadata. Introduces _wp_get_attachment_relative_path() and uses it in wp_get_attachment_url().

Props dd32, SergeyBiryukov.
Fixes #35106 for trunk.

File:
1 edited

Legend:

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

    r36110 r36120  
    879879
    880880/**
     881 * Get the attachment path relative to the upload directory.
     882 *
     883 * @since 4.4.1
     884 * @access private
     885 *
     886 * @param string $file Attachment file name.
     887 * @return string Attachment path relative to the upload directory.
     888 */
     889function _wp_get_attachment_relative_path( $file ) {
     890        $dirname = dirname( $file );
     891
     892        if ( '.' === $dirname ) {
     893                return '';
     894        }
     895
     896        if ( false !== strpos( $dirname, 'wp-content/uploads' ) ) {
     897                // Get the directory name relative to the upload directory (back compat for pre-2.7 uploads)
     898                $dirname = substr( $dirname, strpos( $dirname, 'wp-content/uploads' ) + 18 );
     899                $dirname = ltrim( $dirname, '/' );
     900        }
     901
     902        return $dirname;
     903}
     904
     905/**
    881906 * Caches and returns the base URL of the uploads directory.
    882907 *
     
    10071032        // Uploads are (or have been) in year/month sub-directories.
    10081033        if ( $image_basename !== $image_meta['file'] ) {
    1009                 $dirname = dirname( $image_meta['file'] );
    1010 
    1011                 if ( $dirname !== '.' ) {
     1034                $dirname = _wp_get_attachment_relative_path( $image_meta['file'] );
     1035
     1036                if ( $dirname ) {
    10121037                        $image_baseurl = trailingslashit( $image_baseurl ) . $dirname;
    10131038                }
     
    12901315        $image_base_url = $base_url;
    12911316
    1292         $dirname = dirname( $image_meta['file'] );
    1293         if ( $dirname !== '.' ) {
     1317        $dirname = _wp_get_attachment_relative_path( $image_meta['file'] );
     1318        if ( $dirname ) {
    12941319                $image_base_url .= trailingslashit( $dirname );
    12951320        }
     
    13021327
    13031328        // Add the original image.
    1304         $all_sizes[] = $base_url . $image_meta['file'];
     1329        $all_sizes[] = $image_base_url . basename( $image_meta['file'] );
    13051330
    13061331        // Bail early if the image src doesn't match any of the known image sizes.
Note: See TracChangeset for help on using the changeset viewer.