WordPress.org

Make WordPress Core

Opened 22 months ago

Last modified 4 months ago

#41753 reopened enhancement

_wp_get_attachment_relative_path uses hardcoded uploads directory path

Reported by: nedga055 Owned by:
Milestone: Future Release Priority: normal
Severity: normal Version: 4.7.4
Component: Media Keywords: has-patch
Focuses: Cc:

Description

I'm using a theme that in turn uses the _wp_get_attachment_relative_path to help generate paths to uploaded images.

However, because my WordPress install changes the uploads directory path, the function returns the file system path for the attachment rather than then relative path within the uploads directory as expected, which ultimately breaks the intended functionality.

In _wp_get_attachment_relative_path, would it make sense to do something like the following instead of hard coding 'wp-content/uploads':

$uploads_dir = wp_upload_dir();
$uploads_basedir = $uploads_dir['basedir'];
if ( false !== strpos( $dirname, $uploads_basedir ) ) {
	// Get the directory name relative to the upload directory (back compat for pre-2.7 uploads)
	$dirname = substr( $dirname, strpos( $dirname, $uploads_basedir ) + strlen($uploads_basedir) );
	$dirname = ltrim( $dirname, '/' );
}

Attachments (2)

41753 (511 bytes) - added by nikolastoqnow 22 months ago.
41753.patch (511 bytes) - added by nikolastoqnow 22 months ago.
The correct patch file

Download all attachments as: .zip

Change History (7)

@nikolastoqnow
22 months ago

@nikolastoqnow
22 months ago

The correct patch file

#1 @nikolastoqnow
22 months ago

  • Keywords has-patch added
  • Resolution set to invalid
  • Status changed from new to closed

#2 @nikolastoqnow
22 months ago

  • Resolution invalid deleted
  • Status changed from closed to reopened

This ticket was mentioned in Slack in #core-media by antpb. View the logs.


4 months ago

#4 @antpb
4 months ago

This ticket was discussed in the recent media component meeting. We are wondering if this will impact multisite and would caution that we do some testing with it in that configuration. My initial digging found that we do account for multisite in the wp_upload_dir docs.

https://developer.wordpress.org/reference/functions/wp_upload_dir/

This below comment mentions wu_upload_dir(); accounts for multisite by appending sitename or id.

https://developer.wordpress.org/reference/functions/wp_upload_dir/#comment-2703

#5 @antpb
4 months ago

  • Milestone changed from Awaiting Review to Future Release
Note: See TracTickets for help on using tickets.