如何防止wordpress上传的图片重名

avatar
avatar
80后男人
140
文章
11
评论
2018年3月26日13:52:04 评论 905

WordPress 后台上传图片的流程是,WordPress 使用 media_handle_upload 函数处理整个图片上传的过程,他的步骤是:

1. 使用 wp_handle_upload 把图片上传到 WordPress 上传目录。

2. 然后整理好数据提交给 wp_insert_attachment

3. wp_insert_attachment 函数调用 wp_insert_post 插入到 WordPress 的 posts 数据库表。

4. wp_insert_post 把图片信息插入到 WordPress 的 posts 数据库表之前,会使用 wp_unique_post_slug 函数设置唯一的 post_slug。

wp_unique_post_slug 会到数据库里面检查图片的名字是否已经有了,有了就会重命名图片的名字,比如 1.jpg,就会被重命名为 1-2.jpg,如果 1-2.jpg 名字也有了,就会重命名为 1-3.jpg,以此类推,一直到名字唯一为止。这样会造成上百条 SQL 请求。

我们不可能坚持不上传 1.jpg 这样太常用的图片名字,但是又要为了防止这个大量 SQL 查询的过程,这样就应该在源头就杜绝这个问题,把图片的名字更改了。
function man_handle_upload_prefilter($file) {
if(strlen($file['name'])<=7){ $file['name'] = time().'-'.$file['name']; } return $file; }; add_filter('wp_handle_upload_prefilter', 'man_upload_prefilter');

这段代码就是如果图片的名字(包括 .jpg 后缀名)超过7个字符,就在图片名字前面加上一个时间戳,这样再重复检查的概率就可以说是没有了。

avatar
  • 本文由 发表于 2018年3月26日13:52:04
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
更新到WordPress 4.9.8 wordpress

更新到WordPress 4.9.8

WordPress 4.9.8如期发布,常规的修正各种BUG和安全漏洞,建议立即升级。 升级成功后,在仪表盘页面会显示一个“A new, modern publishing experience is...
wordpress更新至4.97 wordpress

wordpress更新至4.97

最近WordPress安全漏洞:从任意文件删除到任意代码执行这个安全问题闹得沸沸扬扬的,WordPress官方终于坐不住了,提前发布了 4.9.7 来修复这个问题,本站已更新至最新版本,也希望大家尽快...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: