在有些環境中 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 個字符作為文件名。