我们在使用其它开源程序时系统都会对上传的文件自动重命名,而WordPress在上传媒体文件时默认是按照原名称,根据一些个人习惯有时本地文件会存在中文或命名不规范的情况,那么这时候就会带来一些不便,比如图片上传中文文件名出现乱码等,如果文件保存在同一个目录,命名重复也可能覆盖掉之前上传的文件。今天推荐两段自动重命名的代码,以解决此问题。
一、按时间重命名
上传文件后会以年月日时分秒+千位毫秒整数的格式重命名文件,如:20211023122221765.jpg。
//wordpress上传文件重命名
functiongit_upload_filter($file){
$time=date("YmdHis");
$file['name']=$time."".mt_rand(1,100).".".pathinfo($file['name'],PATHINFO_EXTENSION);
return$file;
}
add_filter('wp_handle_upload_prefilter','git_upload_filter');
二、用MD5加密生成数字并重命名
名称规则是由系统自动生成的一个32位的MD5加密文件名,由于默认生成的32位文件名有点长,所以使用substr(md5($name),0,20)截断将其设置为20位。
//wordpress上传文件重命名
functionrename_filename($filename){
$info=pathinfo($filename);
$ext=emptyempty($info['extension'])?'':'.'.$info['extension'];
$name=basename($filename,$ext);
returnsubstr(md5($name),0,20).$ext;
}
add_filter('sanitize_file_name','rename_filename',10);
使用方法:
选择一种重命名规则,将代码添加到当前主题目录下functions.php文件中即可。经过测试,重命名正常生效,并且也支持图片自动重命名后上传至对象云存储中,很方便。
本文地址:https://www.zdmsl.com/demo/001/article/90.html