在有些环境中 WordPress 上传中文文件会产生乱码转码等情况,造成文件链接过长或者文件无法正常打开或下载。之前小编曾经写过一篇文章:《处理 WordPress 上传中文名附件乱码问题》,该方法是在 WordPress 上传文件时判断文件名是否包含中文,如果包含则将文件名以 md5 方式加密,但是 md5 加密过后文件名依然是老长一大串,并不美观,尤其是有强迫症的小伙伴肯定不爽。那么今天小编就发一段 WordPress 上传文件,文件名自动 md5 加密并截取指定长度的代码给大家。

function rename_filename($filename) {
    $info = pathinfo($filename);
    $ext = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($filename, $ext);
    return substr(md5($name), 0, 16) . $ext; //截取前面 16 个字符
}
add_filter('sanitize_file_name', 'rename_filename', 10);

将以上代码加到当前主题 functions.php 文件后,每次上传文件后 WordPress 都会自动将文件已 MD5 方式加密并且截取最前面的 16 个字符作为文件名。