WordPress Version: 6.1
/**
* Retrieves attached file path based on attachment ID.
*
* 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.
*
* The function works by getting the single post meta name, named
* '_wp_attached_file' and returning it. This is a convenience function to
* prevent looking up the meta name and provide a mechanism for sending the
* attached filename through a filter.
*
* @since 2.0.0
*
* @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);
// If the file is relative, prepend upload dir.
if ($file && 0 !== strpos($file, '/') && !preg_match('|^.:\\\\|', $file)) {
$uploads = wp_get_upload_dir();
if (false === $uploads['error']) {
$file = $uploads['basedir'] . "/{$file}";
}
}
if ($unfiltered) {
return $file;
}
/**
* Filters the attached file based on the given ID.
*
* @since 2.1.0
*
* @param string|false $file The file path to where the attached file should be, false otherwise.
* @param int $attachment_id Attachment ID.
*/
return apply_filters('get_attached_file', $file, $attachment_id);
}