如何将WordPress发布的图片上加上时间戳,从而防止图片重名呢?首先,简单地整理一下WordPress后台上传图片的流程,就是WordPress使用MEDIA_HANDLE_UPLOAD函数来处理上传图片的整个过程。步骤如下:
1.使用WP_HANDAND_UPLPAD将图片上载到WordPress上传目录。
2.然后整理数据并将其提交给WP_INSERT_ATTACHMENT。
3.WP_INSERT_ATTACHMENT函数调用WP_INSERT_POST并将其插入WordPress的POST数据库表中。
4.WP_INSERT_POST使用WP_UNIQUE_POST_SLUG函数在将图片信息插入WordPress的POST数据库表之前设置唯一的POST_SLUG。
WP_UNIQUE_POST_SLUG将转到数据库以检查图片的名称是否已经可用,当它可用时,它会重命名图片的名称,例如1.jPG。它将被重命名为1-2.jpg,如果1-2.jpg名称也可用,则将其重命名为1-3.jpg,以此类推,直到名称是唯一的。这将导致数百个sql请求。
我们不能让用户坚持不上传像1.jpg这样太普通的图片名称,但是为了防止大量的SQL查询,我们应该从源头上解决这个问题,并更改图片的名称。
添加以下代码
add_filter(‘wp_handle_upload_prefilter’, function($file) { if(strlen($file[‘name’])<=7){ $file[‘name’] = time().’-‘.$file[‘name’]; } return $file; });
这段代码是,如果图片的名称(包括.jpg后缀名称)超过7个字符,则在图片的名称上添加一个时间戳,这样重复检查的概率就可以被认为消失了。