WordPress 上传媒体文件时,默认会保持文件名不变。如果上传文件名中包含中文字符,则会造成部分浏览器显示的文件 URL 乱码甚至无法访问。网上大多数文章都是通过 wp_handle_upload_prefilter 过滤器实现附件上传自动重命名,但是该方案在重命名文件的同时也会将附件的标题修改,造成数据丢失。本篇文章将介绍一种既能自动重命名文件名且不改变附件标题的方法。

将以下代码添加到所使用主题的 functions.php 文件中最后一个 ?> 前即可。

function my_sanitize_file_name( $filename ) {
    $time = date("YmdHis");
    return $time . "" . mt_rand(1000, 9999) . "." . pathinfo($filename, PATHINFO_EXTENSION);
}
 
add_filter( 'sanitize_file_name', 'my_sanitize_file_name', 10, 1 );