
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://it72.com:4443/1452.htm