当前位置:龙哥网 > 各类源码 > WordPress上传媒体图片自动重命名

WordPress上传媒体图片自动重命名

longge6个月前 (12-03)各类源码104

上传名为 同样名字的图片,可能会造成上百次的 SQL 的请求,甚至造成系统性能的问题。

这是怎么造成的呢?我们先从 wordpress 后台上传图片的流程说起:

wordPress 上传图片的流程

  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,以此类推,一直到名字不再重复为止。

如果长期为了省力,图片都命名为 1.jpg 的话,那么上传一张图,会造成数据库进行几十到上百次的 SQL 查询:

WordPress上传媒体图片自动重命名

WordPress上传媒体图片自动重命名

我们不可能让用户坚持不上传 1.jpg 这样太常用的图片名字,但是又要为了防止这个大量 SQL 查询的过程,我们应该在源头就杜绝这个问题,把图片的名字更改了。

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;

将上面这段代码添加到当前主题的 functions.php 文件,它就是在图片名字前面加上一个时间戳,这样图片名字几乎不可能重复了。


免责声明
本站部分资源来源于互联网 如有侵权 请联系站长删除
龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。#转载请注明出处!