首页 > CMS > Wordpress > 正文

wordpress上传文件自动按日期更名

2024-09-07 00:50:33
字体:
来源:转载
供稿:网友

wordpress上传的图片或文件名都不是我喜欢的,我希望把这些按文件名或都是日期生成文件了,那么要如何操作呢,下面我整理了三种不同的方法来实现上传文件按日期生成文件名的例子.

对于 WordPress 上传图片附件命名的问题,我个人是趋向于用规则重新给图片命名,这样方便后期图片的迁移和管理,周良博客 目前使用的图片附件命名方式是“人工智能。。。”,就是自己手动修改图片的名称,和每篇文章的标题中英文相对,但这个方法对很多图片量很大的站点来说,太过于烦琐,所以周良这里给大家一个 WordPress小技巧,可以让WordpPress 上传图片的时候,自动根据日期时间修改图片地址名称。

我们可以通过下面的代码实现

方法一,插件形式,代码如下:

  1. <?php 
  2. function huilang_wp_handle_upload_prefilter($file){ 
  3. $time=date("Y-m-d"); 
  4. $file['name'] = $time."".mt_rand(1,100).".".pathinfo($file['name'] , PATHINFO_EXTENSION); 
  5. return $file
  6. add_filter('wp_handle_upload_prefilter''huilang_wp_handle_upload_prefilter'); 

使用方法:把这段代码另存为 .php 文件,上传到 wp-content/plugins 目录下,然后在后台启用这个插件即可,如果不想以插件的形式使用,可以把这段代码黏贴到你当前 WordPress 主题的 functions.php 中(黏贴到 functions.php 中时,请一定要去掉本代码第一行的“<?php”,不然会导致网站崩溃).

注:上面的代码修改图片改名称的机制为“年月日+随机数字”,如果你想要加上时分秒,请修改第12行 $time=date(“Y-m-d”); 为 $time=date(“Y-m-d H:i:s”); 即可.

方法二:直接使用在functions.php加如下代码:

  1. //自动改图片文件名称   
  2. function huilang_wp_handle_upload_prefilter($file){   
  3.    $time=date("Y-m-d");   
  4.     $file['name'] = $time."".mt_rand(1,100).".".pathinfo($file['name'] , PATHINFO_EXTENSION);   
  5.    return $file;   
  6. }   
  7. add_filter('wp_handle_upload_prefilter''huilang_wp_handle_upload_prefilter');  

这样做的好处有:有些主机不支持中文名称,会导致上传的图片不会正常显示在用户的浏览器上,ftp下载的中文图片名称的时候乱码,如果你是备份到本地然后恢复的时候,那就全毁了(额,我就是受害者,so...);

提示:上面是改名称为年月日+随机数字,要想加上时分秒,修改第三行 $time=date("Y-m-d"); 为 $time=date("Y-m-d H:i:s"); 即可.

方法三,同样是在function函数中操作

用过wordpress的应该都知道如果我们上传的文件的名字中有中文,上传到linux服务上后发现会是乱码,所以有必要把上传的文件做一个自动重命名,这样也会方便我们管理

在functions.php中加入以下代码:

  1. function new_filename($filename) { 
  2.     $info = pathinfo($filename); 
  3.     $ext = emptyempty($info['extension']) ? '' : '.' . $info['extension']; 
  4.     $name = basename($filename$ext); 
  5.     return md5($name) . $ext
  6. add_filter('sanitize_file_name''new_filename', 10);  

添加保存之后,就可以实现了文件的自动更名,自动生成的是一个32个的md5加密的文件名,如果你认识32位的文件名太长了,你可以使用 substr()来截取你想要的长度,代码如下,我使用的是15位:

  1. function new_filename($filename) { 
  2.     $info = pathinfo($filename); 
  3.     $ext = emptyempty($info['extension']) ? '' : '.' . $info['extension']; 
  4.     $name = basename($filename$ext); 
  5.     return substr(md5($name), 0, 15) . $ext
  6. add_filter('sanitize_file_name''new_filename', 10); 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表