以上是WordPress上传带中文汉字名称的图片不显示的情况,正常上传成功的话,在上图两个地方都会有图片缩略图显示。相信很多WordPress装载linux系统上的朋友都会遇到这样的错误。
WordPress上传带中文汉字名称的图片不显示的原因:
因linux系统不能实别中文字的名称,就算是大小写也是不一样的,比如wordpress和WordPress在linux系统看来这是不一样的东西,而国内有些图片的命名还习惯带有中文汉字,比如像搜狗截图和qq截图,默认的截图名称保存还是带中文,如果不更改图片名称的话会导致上传的图片无法显示。
WordPress上传带中文汉字名称的图片不显示的解决办法:
第一种方法:直接更改wp-admin/includes/file.php这个文件
在WordPress网站根目录下找到wp-admin/includes/file.php这个文件,打开找到以下这段代码:
$new_file = $uploads['path'] . "/$filename";
替换成下面的:
$new_file = $uploads['path'] . "/".date("YmdHis").floor(microtime()*1000).".".$ext;
上传文件就会以“年月日时分秒+千位毫秒整数”的格式重命名文件,也不用担心图片文件名相同而覆盖了原文件,时间不会重复。这样就可以实现wordpress上传图片自动重命名。
通过修改file.php后,我们可以发现自己的wordpress网站后台可以正常上传中文名的图片了。
第二种方法:更改wordpress主题函数文件functions.php文件
在当前WordPress主题文件下面的functions.php后面加上以下代码即可,以下代码会检测一下上传的图片名中是否包含中文,如果包含中文就重命名,如果不包含中文,就使用原来的图片名称
add_filter('sanitize_file_name','fanly_custom_upload_name', 5, 1 ); function fanly_custom_upload_name($file){ $info = pathinfo($file); $ext = empty($info['extension']) ? '' : '.' . $info['extension']; $name = basename($file, $ext); if(preg_match("/[一-龥]/u",$file)){//中文换名 $file = substr(md5($name), 0, 20) . rand(00,99) . $ext;//截取前20位MD5长度,加上两位随机 }elseif(is_numeric($name)){//数字换名 $file = substr(md5($name), 0, 20) . rand(00,99) . $ext;//截取前20位MD5长度,加上两位随机 } return $file; }
评论