Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rename files during upload within Wordpress backend

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

like image 360
gearsdigital Avatar asked Jul 15 '10 20:07

gearsdigital


People also ask

How do I change file name upload?

You can't rename the image when upload. We can change file name by using FileUpload control's SaveAs method. SaveAs() method require to pass a parameter named filename. This parameter value is a string that specifies the full path of the location of the server on which to save the uploaded file.

How do you change a file name in WordPress?

Next, you need to click on the 'Edit' link below the image or media file that you want to rename. This will open your image in the WordPress media edit screen. From here, you can edit details of an image like Alt tag, caption, and more. Scroll down to the bottom and you'll see the filename field.

Which plugin helps us rename image name?

The phoenix media Rename Plugin offers you to change or rename the image file's name after you have uploaded it to the WordPress Media Library. Now, It's not that complicated task after with the help of this Plugin. Just install the Phoenix Rename Plugin by searching it on your WordPress.


1 Answers

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

Not quite sure about that - this seems fairly easy;

/**
 * @link http://stackoverflow.com/a/3261107/247223
 */
function so_3261107_hash_filename( $filename ) {
    $info = pathinfo( $filename );
    $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
    $name = basename( $filename, $ext );

    return md5( $name ) . $ext;
}

add_filter( 'sanitize_file_name', 'so_3261107_hash_filename', 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 so_3261107_hash_filename( $filename ) {
    $info = pathinfo( $filename );
    $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
    $name = basename( $filename, $ext );

    return md5( $name ) . $ext;
}

add_filter( 'sanitize_file_name', 'so_3261107_hash_filename', 10 );
like image 140
TheDeadMedic Avatar answered Sep 21 '22 15:09

TheDeadMedic