Rename files during upload within Wordpress backend

前端 未结 6 1708
清歌不尽
清歌不尽 2020-12-08 16:57

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 im

相关标签:
6条回答
  • 2020-12-08 17:06

    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 );
    
    0 讨论(0)
  • 2020-12-08 17:07

    http://wpapi.com/change-image-name-to-wordpress-post-slug-during-upload/

    BTW:

    Add filter to sanitize_file_name is totally wrong, as sanitize_file_name() function is a helper function to format string, it may be used elsewhere like plugins or themes.

    function wp_modify_uploaded_file_names($file) {
        $info = pathinfo($file['name']);
        $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
        $name = basename($file['name'], $ext);
    
        $file['name'] = uniqid() . $ext; // uniqid method
        // $file['name'] = md5($name) . $ext; // md5 method
        // $file['name'] = base64_encode($name) . $ext; // base64 method
    
        return $file;
    }
    
    add_filter('wp_handle_upload_prefilter', 'wp_modify_uploaded_file_names', 1, 1);
    
    0 讨论(0)
  • 2020-12-08 17:10

    I implemented the same thing, I wanted a more random filename, than the original, as the site I am using this for is for pics only and all files are in one directory.

    i did the following

    return md5($ip . uniqid(mt_rand(), true)) . $ext;
    
    0 讨论(0)
  • 2020-12-08 17:13

    I was really looking for a plugin that could do it properly, and finally I ended up making this one myself. It's available on my blog: http://www.meow.fr/media-file-renamer ! If you use it, please give me a feedback :) I sincerely hope it helps!

    0 讨论(0)
  • 2020-12-08 17:14

    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.

    0 讨论(0)
  • 2020-12-08 17:26

    I've made a plugin for it. I did it because i was having too much trouble with my clients trying to upload images with special characters

    http://wordpress.org/plugins/file-renaming-on-upload

    0 讨论(0)
提交回复
热议问题