I have a widget that works with my theme that expects images named in a certain way, slide1.png, slide2.png, etc…
However, when the user uploads their own images, named slide1.png, slide2.png, etc to the media library, rather than updating the images with the new ones, WordPress changes the names of the replacement images to slide11.png, slide22.png, etc
Can I set a filter in theme options that tells WP to overwrite existing images without changing the filenames?
2 Answers
Here is something i cooked up which was taken mainly from the plugin Overwrite Uploads
but without the extra stuff
add_filter('wp_handle_upload_overrides','noneUniqueFilename');
function noneUniqueFilename($overrides){
$overrides['test_form'] = false;
$overrides['unique_filename_callback'] = 'nonUniqueFilenameCallback';
return $overrides;
}
function nonUniqueFilenameCallback($directory, $name, $extension){
$filename = $name . strtolower($extension);
//remove old attachment
removeOldAttach($filename);
return $filename;
}
function removeOldAttach($filename){
$arguments = array(
'numberposts' => -1,
'meta_key' => '_wp_attached_file',
'meta_value' => $filename,
'post_type' => 'attachment'
);
$Attachments_to_remove = get_posts($arguments);
foreach($Attachments_to_remove as $a)
wp_delete_attachment($a->ID, true);
}