WordPress上传图片自动重命名(3种代码方法分享)

有些主机空间对中文名称支持不足,导致WordPress网站在后台上传中文名的图片或文件时会出现问题。为避免这种情况,可以采取这三种不用插件,只需要修改代码就行

亲测有效的方法一

文件md5转码成15为字符串

    // WordPress上传图片或文件自动重命名的方法
    // 
    add_filter('sanitize_file_name', 'tbwp_new_filename', 10);
    function tbwp_new_filename($filename) {
    $info = pathinfo($filename);
    $ext = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($filename, $ext);
    return substr(md5($name), 0, 15) . $ext;
    }

对应效果文件名:b21ca2cfeb914f.png

亲测有效的方法二

文件名md5转码为32位字符串

    // WordPress 技巧:上传图片自动重命名的几种办法
    // 
    add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
    function custom_upload_filter( $file ){
    $info = pathinfo($file['name']);
    $ext = '.' . $info['extension'];
    $md5 = md5($file['name']);
    $file['name'] = $md5.$ext;
    return $file;
    }

对应效果文件名:d131dd02c5e6eec4.png

亲测有效的方法三:

以上传的时间命名

    // WordPress 技巧:上传图片自动重命名的几种办法
    // https://www.suxing.me/wp-courses/941.html
    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;
    }

这里给出一个自动生成的文件名示例:

2023030114254378.png

文件名组成要点:

开头为当前日期(年月日):20230301
中间为当前时间(时分秒):142543
末尾加上2位随机数:78
最后是文件扩展名:.png
这样可以生成一个含时间信息的唯一文件名。每次生成文件名时,当前时间会不同,随机数也不同,所以名称不会重复。

这个文件名生成逻辑可以应用在需要自动命名上传文件时,比如在WordPress或者其他系统中处理用户上传的文件。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享