WordPress后台默认上传文件到服务器上面是不会改动文件名的,如果想要改动的话就必须到服务器或者ftp上面进行更改,这里提供两种方法让我们的WordPress对上传的媒体文件自动重命名。

1、WordPress上传图片重命名,日期+随机数字的方式

// WordPress上传图片重命名,日期+随机数字的方式
function rename_upload_img($file) {
    $time=date("Y-m-d H:i:s");
    $file['name'] = $time."".mt_rand(100,999).".".pathinfo($file['name'] , PATHINFO_EXTENSION);
    return $file;
}
add_filter('wp_handle_upload_prefilter', 'rename_upload_img');

代码解释:

1、$time=date("Y-m-d H:i:s")这个代表时间:年月日时分秒,如果不要时分秒,写成这样既可$time=date("Y-m-d")

比如当前时间为2022年03月25日18点56分30秒,$time输出的时间为2022-03-25-185630;

2、mt_rand(100,999)是生成一个介于 100 和 999 之间(包括 100 和 999)的随机整数;

3、pathinfo($file['name'], PATHINFO_EXTENSION);这个函数返回该文件的文件扩展名;

4、add_filter() 是WordPress的内置函数,可以挂载一个函数到指定的过滤器上,是用于过滤过滤器中的内容的,简单的说就是把原先默认的内容给“篡改”掉,当然是按照我们想要实现的意图篡改。


在wordpress主题文件中找到functions.php,添加如下代码:

<?php
function star_wp_handle_upload_prefilter($file){ 
   $time=date("Y-m-d");  //改名称为年月日+随机数字
   $file['name'] = $time."".mt_rand(1,100).".".pathinfo($file['name'] , PATHINFO_EXTENSION); 
   return $file;  
} 
add_filter('wp_handle_upload_prefilter', 'star_wp_handle_upload_prefilter'); 
?>

第二、随机MD5 20位字符

// WordPress上传图片重命名,20位随机md5的方式
function rename_filename($filename) {
$info = pathinfo($filename);
$ext = emptyempty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
return substr(md5($name), 0, 20) . $ext;
}
add_filter('sanitize_file_name', 'rename_filename', 10);

由于默认的md5值有32位数,用到了substr函数截取前20个字符作为文件名。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。