不是所有的空间都支持图片名文本名可以包含中文,这就造成了一些,在demo上可以运行的文件,在live site的时候就No found了,但是链接又明明没有问题,比如qq截图;而一些图片,如果是纯英文名,可能名称有他的意义,如Tom.jpg。
以下代码加了判断,如果是图片,才会重命名(其实好像没什么必要)。另外以下代码有一个问题,就是上传的图片Alt属性也变成了生成的名字,下图就是我传了一张包含中文的qq截图。
以下代码用的是时间加上一些随机数字,也可以加上网站名字什么的(其实好像没什么用again)。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function git_upload_filter($file) { $time = date("YmdHis"); $file_name = $file['name']; $file_type = $file['type']; if( $file_type == 'image/png' || $file_type == 'image/jpeg'){ // just change images' name if(preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $file_name) > 0 || preg_match('/[\x{4e00}-\x{9fa5}]/u', $file_name) > 0){ //Include Chinese words $file['name'] = $time . "" . mt_rand(10, 99) . "." . pathinfo($file_name, PATHINFO_EXTENSION); } } return $file; } add_filter('wp_handle_upload_prefilter', 'git_upload_filter'); |