Block Duplicate Uploads
Stops the same file from being uploaded twice by comparing a fingerprint of each new upload with files already in the Media Library, and tells the user where the existing copy is.
Opens WPIDE on
Code
add_filter( 'wp_handle_upload_prefilter', function ( $file ) {
if ( ! empty( $file['error'] ) || empty( $file['tmp_name'] ) || ! is_readable( $file['tmp_name'] ) ) {
return $file;
}
$existing = get_posts( array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'fields' => 'ids',
'numberposts' => 1,
'meta_key' => '_wpide_file_hash',
'meta_value' => md5_file( $file['tmp_name'] ),
) );
if ( $existing ) {
$file['error'] = sprintf( 'This file is already in the Media Library as "%1$s" (ID %2$d).', get_post_field( 'post_title', $existing[0] ), $existing[0] );
}
return $file;
} );
add_action( 'add_attachment', function ( $attachment_id ) {
$path = get_attached_file( $attachment_id );
if ( $path && is_readable( $path ) ) {
update_post_meta( $attachment_id, '_wpide_file_hash', md5_file( $path ) );
}
} );
Notes
Only files uploaded after the snippet is activated have a fingerprint, so older duplicates are not detected.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.