在国内,中文对于我们来说是更加亲切,所以有些站长就用中文给图片命名。但是中文对于linux服务器就不能很好的展示了,图片就出现破图的情况。那么,怎么解决这个问题呢?
一、使用英文命名
上传图片使用英文命名是网站需要,毕竟编程语言是以英文开发的。那么用英文命名就能够很好的解决,中文命名的错误。这不是解决办法,但是这是wordpress网站运行的基础,无关崇洋媚外。况且,我们运行网站也是为国人服务的,只是拿了外国的技术而已。
二、上传重命名文件
1)、修改主题文件
在网站的根目录下找到/wp-admin/includes/file.php文件。将如下代码:
$new_file = $uploads['path'] . "/$filename";
替换为
$new_file=$uploads['path'] ."/".date("YmdHis").floor(microtime()*1000).".".$ext;
这种是把wordpress源文件给更改了,那么每次更新就需要重新更改,一旦忘记就会出现图片出错的问题。
2)、在wordpress主题中更改
在主题下的functions.php中添加如下代码
function wpyou_rename_upload_file_prefilter($file){
$time=date("Y-m-d");
$file['name']=$time."".mt_rand(1,100).".".pathinfo($file['name'],PATHINFO_EXTENSION);
return $file;
}
add_filter('wp_handle_upload_prefilter','wpyou_rename_upload_file_prefilter');
或者
function wpyou_rename_upload_file($filename) {
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
return substr(md5($name), 0, 15) . $ext; // 15 为要截取的文件名长度
}
add_filter('sanitize_file_name', 'wpyou_rename_upload_file', 10);
两种方法都是更改上传文件的名称,如果您有更好的命名方法也可以使用。当然要有一定的代码基础,不然修改容易出问题。当然这种方法的缺点也是很明显的,主题更新或者更换就需要再次添加。
3)、插件更改
Wordpress中插件库是很完善的,有直接重命名,有更改文件为webp格式的,有上传到对象存储的等等。方式多种多样,可以根据需要自己去查找一下,这里太多了就不一一介绍了。缺点是插件功能太多影响网站速度。
4)、自己写插件
在/wp-content/plugins下创建目录例如image,在image下创建index.php文件,内容使用如下图所示,然后开启插件即可。这种方式不影响主题和wordpress版本,并且对网站速度的影响可以忽略不计。同时可以拿到其他网站使用。