The async_upload_{$type} WordPress PHP filter allows you to modify the returned ID of an uploaded attachment based on its type.
Usage
add_filter('async_upload_{$type}', 'your_custom_function', 10, 1); function your_custom_function($id) { // your custom code here return $id; }
Parameters
$type
(string) – The attachment type, such as ‘audio’, ‘file’, ‘image’, or ‘video’.$id
(int) – The uploaded attachment ID.
More information
See WordPress Developer Resources: async_upload_{$type}
Examples
Change Image Attachment ID
Modify the ID of an uploaded image attachment.
add_filter('async_upload_image', 'change_image_attachment_id', 10, 1); function change_image_attachment_id($id) { // Modify the image attachment ID $new_id = $id * 2; return $new_id; }
Add Custom Metadata to Audio Attachment
Add custom metadata to an uploaded audio attachment.
add_filter('async_upload_audio', 'add_custom_metadata_to_audio', 10, 1); function add_custom_metadata_to_audio($id) { // Add custom metadata to the audio attachment update_post_meta($id, 'custom_metadata', 'your_custom_value'); return $id; }
Log Video Attachment Upload
Log the uploaded video attachment ID to a file.
add_filter('async_upload_video', 'log_video_upload', 10, 1); function log_video_upload($id) { // Log the video attachment ID to a file error_log("Uploaded video attachment ID: " . $id, 3, "uploads.log"); return $id; }
Send Email Notification for File Upload
Send an email notification when a file is uploaded.
add_filter('async_upload_file', 'send_email_on_file_upload', 10, 1); function send_email_on_file_upload($id) { // Send email notification for uploaded file $email_subject = "A new file has been uploaded"; $email_body = "File attachment ID: " . $id; wp_mail('[email protected]', $email_subject, $email_body); return $id; }
Delete Uploaded Image If Too Large
Delete an image attachment if its dimensions exceed the allowed size.
add_filter('async_upload_image', 'delete_large_images', 10, 1); function delete_large_images($id) { // Check the image dimensions $max_width = 2000; $max_height = 2000; $image_data = wp_get_attachment_metadata($id); if ($image_data['width'] > $max_width || $image_data['height'] > $max_height) { // Delete the image if it's too large wp_delete_attachment($id, true); return null; } return $id; }