views:

76

answers:

2

Hello,

is there a way to rename files during the upload progress within the Wordpress 3.0 backend? I would like to have a consistent naming of files, especially for images.

I think an 12 (+-) digit hash value of the original filename or something similar would be awesome. Any suggestions?

Regards

+1  A: 

You can't autorename file with the media library function. I would recommend to rename files before you upload them. Even after uploading a file you can't rename it throug WordPress but only through FTP.

The only way to do that would be a plugin that hooks itself into the media library upload process. But it would really be easier to do that before uploading files.

Kau-Boy
Thank you for your comment! I know i can't rename it with the media library function. That is why i ask :)For this Project it would be easier to do it within the upload progress. It's a usability feature for people who are not very familiar with batch renaming and ftp.
gearsdigital
+3  A: 

But it would really be easier to do that before uploading files.

Not quite sure about that - this seems fairly easy;

function make_filename_hash($filename) {
    $info = pathinfo($filename);
    $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($filename, $ext);
    return md5($name) . $ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);

This filter creates a 32 character hash of the original filename, preserving the file extension. You could chop it down a little using substr() if you wanted to.

This filter runs once the file has been uploaded to a temporary directory on your server, but before it is resized (if applicable) and saved to your uploads folder.

Note that there is no risk of file overwrite - in the event that a newly hashed file is the same as one that already exists, WordPress will try appending an incrementing digit to the filename until there is no longer a collision.

WordPress Plugin

<?php

/**
 * Plugin Name: Hash Upload Filename
 * Plugin URI: http://stackoverflow.com/questions/3259696
 * Description: Rename uploaded files as the hash of their original.
 * Version: 0.1
 */

/**
 * Filter {@see sanitize_file_name()} and return an MD5 hash.
 *
 * @param string $filename
 * @return string
 */
function make_filename_hash($filename) {
    $info = pathinfo($filename);
    $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($filename, $ext);
    return md5($name) . $ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);

?>
TheDeadMedic
Thanks TheDeadMusic, i thought about something similar. But hoped there is an ready to use plugin or something easy to customize, I'm not a specialist in writing wordpress plugins or hooks but i'll will try it. Thank you furthermore for your suggestions. Awesome guys at stackoverflow :)
gearsdigital
I've made an update to my answer - save the code in a file as `hash-upload.php` and pop it in your plugins folder :)
TheDeadMedic
How awesome is that! I'm really thrilled about that:) Currently i found a solution my own. I have costumized the upload+ plugin. Works also. But your solution is much much more elegant. Less overhead too. Thank you very much TheDeadMedic (notTheDeadMusic -sorry) Can't vote once again!
gearsdigital
As i asked here-> http://stackoverflow.com/questions/3265350/change-wordpress-gallery-shortcode-slug-to-filename. Why it does not change the post_name too? Same if i set the plugin priority to 1.
gearsdigital
@gearsdigital http://stackoverflow.com/questions/3265350/3271884#3271884
TheDeadMedic