对于 WordPress 上传图片附件命名的问题,我个人是趋向于用规则重新给图片命名,这样方便后期图片的迁移和管理。周良博客 目前使用的图片附件命名方式是“人工智能。。。”,就是自己手动修改图片的名称,和每篇文章的标题中英文相对。但这个方法对很多图片量很大的站点来说,太过于烦琐。所以周良这里给大家一个 WordPress小技巧,可以让WordpPress 上传图片的时候,自动根据日期时间修改图片地址名称。
我们可以通过下面的代码实现
方法一,插件形式
代码如下 | 复制代码 |
<?php function huilang_wp_handle_upload_prefilter($file){ |
使用方法:把这段代码另存为 .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加如下代码
往主题functions.php添加以下代码即可
代码如下 | 复制代码 |
//自动改图片文件名称 function huilang_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', 'huilang_wp_handle_upload_prefilter'); |
这样做的好处有:有些主机不支持中文名称,会导致上传的图片不会正常显示在用户的浏览器上;ftp下载的中文图片名称的时候乱码,如果你是备份到本地然后恢复的时候,那就全毁了(额,我就是受害者,so...);
ps:上面是改名称为年月日+随机数字,要想加上时分秒,修改第三行 $time=date("Y-m-d"); 为 $time=date("Y-m-d H:i:s"); 即可
方法三,同样是在function函数中操作
用过wordpress的应该都知道如果我们上传的文件的名字中有中文,上传到linux服务上后发现会是乱码,所以有必要把上传的文件做一个自动重命名...这样也会方便我们管理
在functions.php中加入以下代码:
代码如下 | 复制代码 |
function new_filename($filename) { $info = pathinfo($filename); $ext = empty($info['extension']) ? '' : '.' . $info['extension']; $name = basename($filename, $ext); return md5($name) . $ext; } add_filter('sanitize_file_name', 'new_filename', 10); |
添加保存之后,就可以实现了文件的自动更名,自动生成的是一个32个的md5加密的文件名,如果你认识32位的文件名太长了
你可以使用 substr()来截取你想要的长度,代码如下,我使用的是15位
代码如下 | 复制代码 |
function new_filename($filename) { $info = pathinfo($filename); $ext = empty($info['extension']) ? '' : '.' . $info['extension']; $name = basename($filename, $ext); return substr(md5($name), 0, 15) . $ext; } add_filter('sanitize_file_name', 'new_filename', 10); |