本文中介绍的功能已集成的 Wenprise Pinyin Slug 插件中,安装启用插件即可
很多 WordPress 主机都是 Linux 系统的,上传的文件名为中文的时候就会遇到文件编码的问题,导致图片不能上传或者上传的图片显示不出来,这种情况最容易在 WordPress 换主机搬家的时候出现,文件明明是有的,可是文件名变成了谁也不认识的乱码。
出现这种情况的原因是 Windows 系统下,文件名称的编码为 GBK,而在 Linux 服务器上,文件名的编码为 UTF-8 的,而英文在 GBK 和 UTF-8 都会正常显示。知道了原因,我们也就找出了解决办法,在上传的时候判断一下文件名,如果是中文,就自动把文件的 MD5 作为文件名,英文则保持不变。
function upload_media($filename) {
$parts = explode('.', $filename);
$filename = array_shift($parts);
$extension = array_pop($parts);
foreach ( (array) $parts as $part)
$filename .= '.' . $part;
if(preg_match('/[\x{4e00}-\x{9fa5}]+/u', $filename)){ //判断文件名为中文
$filename = substr(md5($filename), 0, 8); //把文件的md5值的前8位作为文件名
}
$filename .= '.' . $extension;
return $filename ;
}
add_filter('sanitize_file_name', 'upload_media', 5,1);
把以上代码加入到WordPress主题的 functions.php 中即可。
完成了上面的步骤后,再次上传文件的时候,如果文件名是英文或数字,文件名会保持原样,如果文件名是中文,就会被自动转换为英文字符串。如果,在更换主机的时候,就避免了文件乱码的问题。