在网上找了一段WordPress上传文件自动重命名的代码,感觉不完整,因为该代码将所有上传的文件都重命名了,出于SEO考虑,有时我们需要带有关键词的文件名,如果被重命名为随机字符串,那就没有任何意义了。
所以我改进了一下代码,实现在文件名包含字母、数字、连接符、下划线之外的字符的情况下,才重命名为15个字符长度的名称,符合要求的文件名称将不作任何修改,这样就保证了我们刻意设置的对SEO友好的文件名称不会被破坏,而不小心上传的会变乱码的文件名称将被md5编码并截取为15个字符。
function new_filename($filename) {
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
if ( !preg_match('/^[0-9a-zA-Z_-]+$/', $name) )
$name = substr(md5($name), 0, 15);
return $name . $ext;
}
add_filter('sanitize_file_name', 'new_filename', 10);
把以上代码复制到主题文件functions.php中即可。