The get_attached_file WordPress PHP filter allows you to modify the file path of an attached file based on its 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 no file is found.$attachment_id(int) – The ID of the attachment.
More information
See WordPress Developer Resources: get_attached_file
Examples
Change Attachment File Path
Modify the file path of an attachment to a custom directory.
add_filter( 'get_attached_file', 'change_attachment_file_path', 10, 2 );
function change_attachment_file_path( $file, $attachment_id ) {
// Replace 'your-custom-directory' with your desired directory
$custom_path = 'your-custom-directory/' . basename( $file );
return $custom_path;
}
Check Attachment File Size
Retrieve the file size of an attachment before performing an action.
add_filter( 'get_attached_file', 'check_attachment_file_size', 10, 2 );
function check_attachment_file_size( $file, $attachment_id ) {
$file_size = filesize( $file );
if ( $file_size < 1000000 ) { // 1MB
// Perform your desired action
}
return $file;
}
Change Attachment File Extension
Modify the file extension of an attachment.
add_filter( 'get_attached_file', 'change_attachment_file_extension', 10, 2 );
function change_attachment_file_extension( $file, $attachment_id ) {
// Replace 'new-extension' with your desired file extension
$new_extension = 'new-extension';
$file_info = pathinfo( $file );
$new_file = $file_info['dirname'] . '/' . $file_info['filename'] . '.' . $new_extension;
return $new_file;
}
Add Timestamp to Attachment File Name
Append a timestamp to the file name of an attachment.
add_filter( 'get_attached_file', 'add_timestamp_to_attachment_name', 10, 2 );
function add_timestamp_to_attachment_name( $file, $attachment_id ) {
$file_info = pathinfo( $file );
$timestamp = time();
$new_file = $file_info['dirname'] . '/' . $file_info['filename'] . '_' . $timestamp . '.' . $file_info['extension'];
return $new_file;
}
Apply Custom Function to Specific Attachment Type
Apply a custom function only to a specific attachment type, such as images.
add_filter( 'get_attached_file', 'apply_custom_function_to_image_attachments', 10, 2 );
function apply_custom_function_to_image_attachments( $file, $attachment_id ) {
$mime_type = get_post_mime_type( $attachment_id );
if ( wp_attachment_is_image( $attachment_id ) || strpos( $mime_type, 'image' ) !== false ) {
// Apply your custom function here
}
return $file;
}