WordPress图片上传自动重命名为时间格式

Home / Article MrLee 2015-3-18 2855

6a63f6246b600c3301f254fa1e4c510fd9f9a17d


WordPress是国外开发的,所以某些功能中文支持可能不太好。比如图片上传名字是中文会导致图片无法正常显示,所以自动重命名对于WP来说尤为重要,特别是LINUX的不支持中文名的。 WordPress上传多媒体的代码都存放于\wp-admin\includes\里面的file.php,打开这个文件 找到这行代码: $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); 4.1版本在325行,然后在这行代码前加上下面几行
 date_default_timezone_set("Asia/Shanghai");
 $time=date("YmdHis");
 $file_type = strtolower(trim(substr(strrchr($file['name'], '.'), 1)));//文件后缀
 $nameLen = mb_strlen($file['name'])-mb_strlen($file_type)-1;//去掉一个.
 $nameLen = $nameLen>6?6:$nameLen;//
 $srcName = mb_substr($file['name'],0,$nameLen,"UTF-8");//取原来名字前6个
 $file['name'] = $srcName.'_'.$time.'.'.$file_type ;//标记名字,方便知道这个文件是什么文件
 $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );

把文件名改成了时间格式,年月日时分秒,后面再加1到100随机数
不过这种方法有点不好,每次WP升级的时候都需要重新再改,那么我们只需要用第二种方法即可。在自己的主题functions.php中添加以下函数。
//改上传文件名
function new_filename($filename) {
	date_default_timezone_set("Asia/Shanghai");
	$time=date("YmdHis");
	$file_type = strtolower(trim(substr(strrchr($filename, '.'), 1)));//文件后缀
	$nameLen = mb_strlen($filename)-mb_strlen($file_type)-1;//去掉一个.
	$nameLen = $nameLen>6?6:$nameLen;//
	$srcName = mb_substr($filename,0,$nameLen,"UTF-8");//取原来名字前6个
	$filename = $srcName.'_'.$time.'.'.$file_type ;//标记名字,方便知道这个文件是什么文件
	return $filename;
}
add_filter('sanitize_file_name', 'new_filename', 10);

然后就不怕wordpress升级了。

本文链接:https://www.it72.com/1452.htm

推荐阅读
最新回复 (0)
返回