如何移除WordPress图片URL中自动添加的日期与时间戳后缀?
WordPress上传图片自动加时间戳后缀问题解决方案
触发原因
你观察到的-20210601-071141类文件名后缀,是WordPress内置的重名文件规避机制触发的结果,和你调整的「按年月归档上传文件」设置无关:该设置仅控制上传文件的存放文件夹结构,不会修改文件名本身。
只要出现以下任意一种情况,WordPress就会自动给新上传的文件加后缀避免覆盖:
- 媒体库中已存在完全同名的文件(包括存放在回收站未彻底删除的文件)
wp-content/uploads目录下存在和上传文件同名的残留文件
解决方法
常规修复(无需改代码)
- 进入WordPress后台「媒体」-「回收站」,将所有回收站文件彻底永久删除
- 通过FTP或服务器文件管理器进入
wp-content/uploads目录,手动删除和你要上传的文件同名的残留文件,再重新上传即可得到无后缀的URL - 已上传的带后缀文件,可直接在媒体库的文件编辑页修改文件名为目标名称,保存后URL会同步更新
代码级关闭时间戳后缀机制(可选)
如果确认可以接受重名文件覆盖风险,或者希望将后缀替换为数字序号而非时间戳,可以将以下代码添加到当前使用主题的functions.php文件中:
// 禁用上传文件自动加时间戳后缀机制 add_filter('wp_handle_upload_prefilter', 'custom_upload_filename_rule'); function custom_upload_filename_rule($file) { $upload_dir = wp_upload_dir(); $raw_filename = $file['name']; $file_ext = pathinfo($raw_filename, PATHINFO_EXTENSION); $file_name = pathinfo($raw_filename, PATHINFO_FILENAME); // 不需要后缀直接覆盖的话,删除下方循环逻辑,直接返回$file即可 $suffix = 1; while (file_exists($upload_dir['path'] . '/' . $file_name . '.' . $file_ext)) { $file_name = $file_name . '-' . $suffix; $suffix++; } $file['name'] = $file_name . '.' . $file_ext; return $file; }
如果要完全关闭重名检测、直接覆盖旧文件,删除代码中注释标注的循环逻辑即可。
注意事项
- 修改
functions.php前请先备份原文件,避免语法错误导致站点前台无法访问 - 开启直接覆盖重名文件逻辑前,请确认旧同名文件没有被其他页面引用,否则会导致对应页面出现图片404错误
内容的提问来源于stack exchange,提问作者Soufiane M
相关产品推荐
相关产品推荐

