专注WordPress
主题开发与研究

「WordPress技巧」非插件实现WordPress上传图片自动重命名的方法

以前用新浪图床来放图片,没有放在本地也就没有最近分享的这样的问题那样的问题。今天跟大家说的就是非插件实现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

赞(0) 打赏
未经允许不得转载:WP粉丝网 » 「WordPress技巧」非插件实现WordPress上传图片自动重命名的方法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

WP粉丝网 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏