Media: Add argument to `get_attached_file()` for subsizes.

Add a `$size` argument to `get_attached_file()` to simplify getting the path to an intermediate image size.
 
Props paulschreiber, audrasjb, Mista-Flo.
Fixes #51780.
Built from https://develop.svn.wordpress.org/trunk@55199


git-svn-id: http://core.svn.wordpress.org/trunk@54732 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
joedolson 2023-02-02 23:40:16 +00:00
parent 93234049f2
commit 848a832fa0
2 changed files with 21 additions and 5 deletions

View File

@ -705,6 +705,8 @@ function create_initial_post_types() {
/**
* Retrieves attached file path based on attachment ID.
*
* Will return intermediate size path if $size param is provided.
*
* By default the path will go through the 'get_attached_file' filter, but
* passing a true to the $unfiltered argument of get_attached_file() will
* return the file path unfiltered.
@ -715,13 +717,27 @@ function create_initial_post_types() {
* attached filename through a filter.
*
* @since 2.0.0
* @since 6.2 The `$size` parameter was added
*
* @param int $attachment_id Attachment ID.
* @param bool $unfiltered Optional. Whether to apply filters. Default false.
* @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array
* of width and height values in pixels (in that order). Default ''.
*
* @param int $attachment_id Attachment ID.
* @param bool $unfiltered Optional. Whether to apply filters. Default false.
* @return string|false The file path to where the attached file should be, false otherwise.
*/
function get_attached_file( $attachment_id, $unfiltered = false ) {
$file = get_post_meta( $attachment_id, '_wp_attached_file', true );
function get_attached_file( $attachment_id, $unfiltered = false, $size = '' ) {
// Check for intermediate sizes first, otherwise fallback to original attachment size
if ( ! empty( $size ) ) {
$intermediate_image = image_get_intermediate_size( $attachment_id, $size );
if ( ! $intermediate_image || ! isset( $intermediate_image['path'] ) ) {
return false;
}
$file = $intermediate_image['path'];
} else {
$file = get_post_meta( $attachment_id, '_wp_attached_file', true );
}
// If the file is relative, prepend upload dir.
if ( $file && 0 !== strpos( $file, '/' ) && ! preg_match( '|^.:\\\|', $file ) ) {

View File

@ -16,7 +16,7 @@
*
* @global string $wp_version
*/
$wp_version = '6.2-alpha-55198';
$wp_version = '6.2-alpha-55199';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.