The get_attached_file WordPress PHP filter retrieves the file path of an attached file using the given attachment ID.
Usage
add_filter('get_attached_file', 'your_custom_function', 10, 2);
function your_custom_function($file, $attachment_id) {
// your custom code here
return $file;
}
Parameters
$file(string|false): The file path to where the attached file should be, or false if not found.$attachment_id(int): The attachment ID.
More information
See WordPress Developer Resources: get_attached_file
Examples
Change the file path for specific attachments
Modify the file path for attachments with specific IDs.
add_filter('get_attached_file', 'change_specific_file_path', 10, 2);
function change_specific_file_path($file, $attachment_id) {
if ($attachment_id == 123 || $attachment_id == 456) {
$file = '/new/path/to/your/file.jpg';
}
return $file;
}
Replace file extensions
Replace the file extension of all attachments with a custom one.
add_filter('get_attached_file', 'replace_file_extension', 10, 2);
function replace_file_extension($file, $attachment_id) {
$file = preg_replace('/\.(.+)$/', '.custom-extension', $file);
return $file;
}
Add a version number to file paths
Append a version number to the file paths of all attachments.
add_filter('get_attached_file', 'add_version_number', 10, 2);
function add_version_number($file, $attachment_id) {
$file = $file . '?ver=1.0';
return $file;
}
Change the base directory of attachment files
Move attachment files to a custom directory.
add_filter('get_attached_file', 'change_base_directory', 10, 2);
function change_base_directory($file, $attachment_id) {
$file = str_replace('/wp-content/uploads/', '/custom/uploads/directory/', $file);
return $file;
}
Prevent access to specific file types
Restrict access to certain file types by returning false for their paths.
add_filter('get_attached_file', 'prevent_specific_file_types', 10, 2);
function prevent_specific_file_types($file, $attachment_id) {
if (preg_match('/\.(exe|bat|sh)$/i', $file)) {
return false;
}
return $file;
}