在Wordpress后端上传期间重命名文件 [英] Rename files during upload within Wordpress backend

查看:126
本文介绍了在Wordpress后端上传期间重命名文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在Wordpress 3.0后端的上传过程中重命名文件?我想对文件进行一致的命名,尤其是对于图像.

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.

我认为原始文件名的12(+-)位哈希值或类似的值会很棒.有什么建议吗?

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

致谢

推荐答案

但是在上传文件之前这样做确实会更容易.

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 );

此过滤器创建原始文件名的32个字符的哈希,保留文件扩展名.如果需要,可以使用substr()将其切碎.

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.

请注意,没有文件被覆盖的风险-如果新散列的文件与已经存在的文件相同,则WordPress将尝试在文件名后附加一个递增的数字,直到不再存在冲突为止.

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.

<?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 );

这篇关于在Wordpress后端上传期间重命名文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆