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

查看:34
本文介绍了在 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天全站免登陆