剛剛好在 WordPress 的 FB 社群上看到,有人在說上傳中文檔名的檔案消失了。
沒錯!這問題在 WordPress 當中確實很可能會發生,不過實際發生的條件是什麼沒有詳細研究,但可以肯定的是,上傳中文檔名的附件,你很可能會在媒體列表當中看到他的存在,但是你卻無法下載他或是圖片看不到內容。
這時候就需要寫一小段程式來處理了啦~
add_filter('sanitize_file_name', 'nice_sanitize_file_name');
function nice_sanitize_file_name($file_name) {
$parts = explode('.', $file_name);
if( preg_match('@^[a-z0-9][a-z0-9-_]*$@i', $parts[0]) ) {
$file_name = $parts[0];
} else {
$file_name = substr(md5($parts[0]), 0, 10);
}
if( count($parts) > 2 ) {
return $file_name;
} else {
$extension = array_pop($parts);
return $file_name . '.' . $extension;
}
}
如果你上傳的檔名是以 英文 數字 – _ 這四種類文字所組合而成的,就不修改檔名。
如果不是,就將檔名改成一個由 英文 數字 組合而成的字串,長度為 10 個字。
但是最重要的問題來了,你需要將這程式放在哪裡呢?
當然是需要寫成一個外掛來運作啦!至於放置在佈景主題的 functions.php 檔案裡面有沒有效果,我就沒嘗試過 ( 我是懶人,不想測試 )。
如果你不會寫外掛的話,也不用擔心。
因為我已經寫好並將上架到官方的外掛列表中,你只需要於後台搜尋【RY Nice Upload FileName】外掛就可以輕鬆解決本問題了。