在国内,中文对于我们来说是更加亲切,所以有些站长就用中文给图片命名。但是中文对于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版本,并且对网站速度的影响可以忽略不计。同时可以拿到其他网站使用。