WordPress 檔案上傳後自動改名

現在WordPress檔案上傳功能可以上傳中文檔案名稱,但是在版型上支援度對於中文還是沒有太好,所以建議大家還是不要將圖片或是檔案使用中文檔名上傳,因為很可能造成網站出錯,或者是備份下來也亂碼等怪問題,要解決這問題最簡單方式就透過WordPress的filter實現檔案上傳後自動命名。

將以下語法放置到 functions.php 裡面,只要透過後台媒體功能(WordPress內建上傳功能)把檔案上傳,檔案名稱就會根據原始檔案名稱進行md5的雜湊運算,得出的檔案名稱將是這個檔案的新名稱。

function make_filename_hash($filename) {
    $info = pathinfo($filename);
    $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($filename, $ext);
    return md5($name) . $ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);

語法來源:Stackoverflow.