WordPress 上传媒体文件时,默认会保持文件名不变。如果上传文件名中包含中文字符,则会造成部分浏览器显示的文件 URL 疑似乱码甚至无法访问。网上流行较广的是通过注册 wp_handle_upload_prefilter 过滤器实现,但是该方案在重命名文件的同时也会将附件的标题修改,造成数据丢失。本篇文章将介绍一种既能自动重命名文件名且不改变附件标题的方法。
将以下代码添加到所使用主题的functions.php 文件中最后一个?>的前面即可。
1 function wp_coderbusy_sanitize_file_name( $filename ) { 2 $time = date("YmdHis"); 3 return $time . "" . mt_rand(1000, 9999) . "." . pathinfo($filename, PATHINFO_EXTENSION); 4 } 5 6 add_filter( 'sanitize_file_name', 'wp_coderbusy_sanitize_file_name', 10, 1 );