WordPress 上传文件自动重命名

  WordPress 在上传文件的时候默认以源文件名储存文件,这样的做法其实很讨人喜欢。不过在某些主机上,中文文件名没有被很好支持,所以有的时候就需要 WordPress 将上传的文件自动重命名。

  实现 WordPress 上传文件自动重命名有两种方法,分别是修改 WordPress 程序文件和修改当前主题的 functions.php 文件。前者在更新 WordPress 程序后会失效,而后者在更新或者更换主题后会失效,所以要根据自己的需要进行选择,推荐选择后者。

  这里只给出第二种方法,找到当前主题的 functions.php 文件,在其结尾 ?> 之前添加以下代码:

//上传文件重命名
function new_filename($filename) {
     $info = pathinfo($filename);
     $ext = empty($info['extension']) ? '' : '.' . $info['extension'];
     $name = basename($filename, $ext);
     return substr(md5($name), 0, 20) . $ext;
}
add_filter('sanitize_file_name', 'new_filename', 10);

  注意其中的 return substr(md5($name), 0, 20) . $ext; 这个语句的意思是截取上传文件 md5 值的前20位作为文件名,可以根据自己的需要进行修改。

  特别提示: functions.php 文件是主题核心文件,请谨慎修改。详见 编辑 WordPress 主题 functions.php 文件时的注意事项