MIS 腳印

記錄 IT 學習的軌跡

WordPress 僅針對圖片檔案上傳自動更改檔名

本文章將說明如何讓 WordPress 僅針對圖片檔案上傳時自動更改檔案名稱,來避免名稱重複。


通常只有圖片檔案上傳時,會需要自動更改檔案名稱,因為非圖片的檔案大多是提供下載用途,總不希望下載的檔案是沒有意義的名稱,所以都是使用原檔案名稱。

完全不須使用外掛,自己加入本文章提供的程式範例,即可實現僅針對圖片檔案上傳自動更改檔名。

程式範例

將下述程式碼貼至 /wp-content/themes/[主題名稱]/functions.php
/**
 * 檔案上傳圖片格式 (.png、.jpg 或 .gif),使用 md5 雜湊運算自動改名 (其他檔案格式則不影響)
 */

function makeFilenameHash($filename) {
	// 判斷是否為圖片檔案格式
	if (preg_match('/\.(jpg|png|gif)$/i', $filename)) {
		$info = pathinfo($filename);
		$ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
		
		// 回傳雜湊唯一的檔案名稱
		return md5(uniqid( microtime(true), true)) .  $ext;
	} else {
		return $filename;
	}
}
add_filter('sanitize_file_name', 'makeFilenameHash', 10);

發表迴響