修正中文檔名上傳後檔案消失的問題

剛剛好在 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】外掛就可以輕鬆解決本問題了。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *