龙哥以前刚刚接触wordpress 的时候上传图片发现后台媒体库和编辑都不显示,于是简单找了一下原因。
其实就是WordPress网站上传包含中文名的图片,网页会无法正常显示出图片。
网上说这个情况一般都是Linux主机的服务器,Windows主机没有这个问题。
但龙哥发现中文在widdows 主机有时候也是不显示,前端显示还算挺正常,但是后端就不正常了!
因为Linux主机无法识别中文字符,导致网站带中文字符的图片无法正常显示。
由于很多图片都是截图的方式获取的,比如QQ,微信,360等截图工具,截取图片后会自动加入中文名称。
如果直接上传就会出现上面无法显示的问题。
这样很不利于我们日常操作,和间接的影响网站的seo
解决方法也很简单,可以修改WordPress程序让上传的文件自动重新命名,这样就从根本上解决了问题。(注意每次wordpress更新记得更改一下)
具体解决方法如下:
修改网站程序:wp-admin/includes/file.php 找到下面代码:
$new_file = $uploads['path'] . "/$filename";
修改为:
$new_file = $uploads['path'] . "/".date("YmdHis").floor(microtime()*1000).".".$ext;
以上代码意思就是,上传文件就会以“年月日时分秒+千位毫秒整数”的格式重命名文件。这就再也不用担心图片文件名相同而覆盖了原文件。
其实这样的原理就是实现wordpress上传图片自动重命名了。
所以龙哥做了个2.0版本,因为有时候我命名的图片是有自身含义的,并且是英文名对上传也没有影响,但是改了代码之后全部给我统一更改了。
废话不多说,上代码!
if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $filename))//意思是包含中文才修改,不然就给我保留下来
$new_file = $uploads['path'] . "/".date("YmdHis").floor(microtime()*1000).".".$ext;
else $new_file = $uploads['path'] . "/$filename";
今天的内容就到这里了,喜欢的关注一下龙哥,分享更多wordpress干货技巧