以前用新浪图床来放图片,没有放在本地也就没有最近分享的这样的问题那样的问题。今天跟大家说的就是非插件实现WordPress上传图片自动重命名的方法,相信用wordpress做网站的朋友都知道,如果把所有图片都入在一个文件夹里面,上传图片是很容易重名的。图片一多就够你想图片名称了,所以用一种不用重名的规律来重命名上传的图片就显得需要了。在网上找了一下,发现了“「WordPress技巧」非插件实现WordPress上传图片自动重命名的方法”这篇教程,介绍了几种非插件实现WordPress上传图片自动重命名的方法,现分享如下:
方法一、根据上传的时间命名
上传文件时会以“年月日时分秒+千位毫秒整数+随机数”的格式重命名文件。
将以下代码加入主题的function.php
文件中即可
add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' ); function custom_upload_filter( $file ){ $info = pathinfo($file['name']); $ext = $info['extension']; $filedate = date('YmdHis').rand(10,99);//为了避免时间重复,再加一段2位的随机数 $file['name'] = $filedate.'.'.$ext; return $file; }
效果如下:
方法二、文件名md5转码为32位字符串
名称规则是由系统自动生成的一个32位的MD5加密文件名,由于默认生成的32位文件名有点长,所以使用substr(md5($name), 0, 20)
截断将其设置为20位。
1.function rename_filename($filename) { 2. $info = pathinfo($filename); 3. $ext = emptyempty($info['extension']) ? '' : '.' . $info['extension']; 4. $name = basename($filename, $ext); 5. return substr(md5($name), 0, 20) . $ext; 6.} 7.add_filter('sanitize_file_name', 'rename_filename', 10);
如果出于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);
使用方法同方法一,加入当前主题的function.php文件中。
方法三、修改wordpress程序file.php文件实现
打开WordPress程序的根目录下的/wp-admin/includes/file.php
文件。大概位置在327到334行之间。或者搜索:// Move the file to the uploads dir.来定位要修改的位置。
找到以下代码段
$new_file = $uploads['path'] . "/$filename";
将上面的代码屏蔽掉,添加以下代码,代码的意思是“年月日时分秒+千位毫秒整数”的格式重命名文件。
$new_file = $uploads['path'] . "/".date("YmdHis").floor(microtime()*1000).".".$ext; /*上传重命名为时间格式*/
也能实现方法一中的效果。
个人观点
个人比较推荐方法一中的修改方法,不会重名的同时也比较方法三更方便,方法三如何更新文件有可能被覆盖掉,而放在主题的function.php文件中相对来说更放心一些。
注意事项
众所周知wordpress程序会因为个别服务器的配置环境原因,对中文路径和中文图片名称的解析能力是非常差的,在个别的路径和文章打开时会出现无法显示的情况,所以不要用中文名来命名。
至此,关于“「WordPress技巧」非插件实现WordPress上传图片自动重命名的方法”分享结束了,博主亲测方法一OK。
参考文章链接
http://zmingcx.com/wordpress-upload-file-renaming.html
https://blog.epinv.com/post/777.html
http://www.shashou47.com/184.html