相信做網頁開發的工作者都知道,盡量不要使用中文檔名,因為可能會有未知的問題會發生,大部分還是建議英文、數字為檔名格式,尤其 WordPress 常常會使用到全世界開發的插件,還是以英文與細微大宗拉,舉例說明:如果插件是跟檔名有關,若用正規表達式來判斷檔名就會造成問題
^[a-zA-Z0-9_]*$
透過下方 API 自動將上傳檔案,改用 md5() 來產生,代碼如下:
/**
* 上傳檔案後自動更名,避免中文檔名
* Filter {@see sanitize_file_name()} and return an MD5 hash.
* @link https://stackoverflow.com/a/3261107
* @link http://stackoverflow.com/a/3261107/247223
*/
function v123_tw_hash_filename( $filename ) {
$info = pathinfo( $filename );
$ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
$name = basename( $filename, $ext );
return 'v123-tw-'.md5( $name ) . $ext;
}
add_filter( 'sanitize_file_name', 'v123_tw_hash_filename', 10 );