/ 经验分享 / 15浏览

WordPress上传图片自动重命名

经常通过微信把图片从手机传到电脑上,导致很多图片都是“微信图片_XXX”这种形式的文件名,在URL中不美观。所以希望给博客添加自动重命名上传文件的功能。

以前使用过的WPJAM插件有这个功能,但该插件的其它功能我都不需要,所以没考虑它。最后选择用目前正在使用的code snippet插件,通过添加一段代码来实现。

文件名需要尽量简短,不要出现中文和特殊字符,所以选择了计算MD5值作为文件名。如果对图片内容计算MD5,上传两次同一张图片会出现同名情况。仅对文件名计算MD5也是一样的。也考虑过计算MD5值然后在后面加上时间戳,但这样拼接出来的文件名有点长。

最后选择md5(文件名+上传时间)这样的命名方式,只有在同一时间上传同名文件才会同名,这种情况几乎不会出现。MD5碰撞的情况也就不考虑了,真碰了我也认了。

add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
function custom_upload_filter( $file ){
    $info = pathinfo($file['name']);
    $ext = '.' . $info['extension'];
    //如果文件名相同,则MD5值也会相同
    //所以在文件名后面加上上传的时间再计算MD5,这样重名几乎就不可能了
    $md5 = md5($file['name'].date('YmdHis'));
    $file['name'] = $md5.$ext;
    return $file;
}

也想过把原来上传的图片也给重命名了,但有点复杂,需要动数据库,遂放弃这个想法。

WordPress无法访问原始图片
Halo附件上传失败可能的原因
踩坑笔记:tinyMediaManager
踩坑笔记:tinyMediaManager
解决《骑砍2》卡顿问题——充分发挥渣机性能
解决《骑砍2》卡顿问题——充分发挥渣机性能
Minecraft基岩版BDS性能也太强了吧!!!
Minecraft基岩版BDS性能也太强了吧!!!
饥荒联机海难+哈姆莱特需要安装的MOD

0

  1. This post has no comment yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注