WordPress上传图片自动重命名

在Liunx系统中,WordPress上传的图片为中文名称时,很容易导致上传的中文名称的图片名称显示为乱码,严重的有可能无法在用户的浏览器中正常显示;有时,在FTP下载这些中文名称的图片时,是以乱码的形式保存的,从而出现无法恢复原图片的问题。

针对这些问题有多种解决方法,具体如下:

修改WordPress系统文件实现

通过FTP登录网站主机,找到根目录下的/wp-admin/includes/file.php文件,在文件中找到以下代码:

// Move the file to the uploads dir
$new_file = $uploads[‘path’] . “/$filename”;
if ( false === @ move_uploaded_file( $file[‘tmp_name’], $new_file ) )
return $upload_error_handler( $file,

将以上代码修改为如下代码:

// Move the file to the uploads dir
$new_file = $uploads[‘path’] . “/”.date(“YmdHis”).floor(microtime()*1000).”.”.$ext;
if ( false === @ move_uploaded_file( $file[‘tmp_name’], $new_file ) )
return $upload_error_handler( $file, sprintf( __(‘The uploaded file could not be moved to %s.’ ), $uploads[‘path’] ) );

保存修改后的 file.php 文件,这样就可以实现WordPress上传图片自动重命名了,保存后上传文件名称就会以“年月日时分秒+千位毫秒整数”的格式自动重命名。

wordpress改图片名字

在主题中添加自定义函数实现

在网站当前使用的wordpress主题模板中(文件路径为 /wp-content/themes/主题文件/)下的 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’);

保存,上传的图片文件名称为年月日+随机数字,如果想加上时分秒,修改第三行 $time=date(“Y-m-d”); 为 $time=date(“Y-m-d H:i:s”); 即可。

在主题中添加自定义函数实现方法二

在网站当前使用的wordpress模板中(文件路径为 /wp-content/themes/主题文件/)下的 functions.php 文件中加入以下代码:

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);

这个方法的图片重命名的规则为系统自动生成的一个32位的MD5加密文件名,因为32位文件名有点长,所以我们在substr(md5($name), 0, 15) 中截断了将其设置为15位。

 

留言