WordPress上传带中文汉字名称的图片不显示的解决办法

admin
admin
admin
374
文章
102
评论
2021年1月21日12:05:20
评论
554

WordPress上传带中文汉字名称的图片不显示的解决办法

以上是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;
}
admin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: