WordPress上传图片不重名并自动命名的优化代码

网站时间长了,我们更新内容的时候上传的图片有可能会出现重名,那么有没有办法可以防止图片重名呢?本文小编和大家分享一段代码,可以有效防止在上传图片的时候出现重名的情况。

在functions.php文件中添加以下代码:

add_filter('wp_handle_upload_prefilter', 'custom_upload_filter');
function custom_upload_filter($file) {
    // 获取上传文件名
    $filename = $file['name'];
    
    // 检查当前主题目录下是否存在同名文件
    $uploads = wp_upload_dir();
    $upload_path = $uploads['path'] . '/';
    $basename = pathinfo($filename, PATHINFO_FILENAME);
    $extension = pathinfo($filename, PATHINFO_EXTENSION);
    
    $i = 1;
    
    while (file_exists($upload_path . $filename)) {
        // 若存在同名文件,则在文件名后面加上数字递增
        $filename = $basename . '-' . $i . '.' . $extension;
        $i++;
    }
    
    // 更新文件信息
    $file['name'] = $filename;
    
    return $file;
}

以上代码使用了wp_handle_upload_prefilter过滤器来拦截上传操作,并通过检查当前主题目录下是否存在同名文件,如果存在则在文件名后面加上数字递增。最后更新文件信息并返回。这样即可实现WordPress上传图片不重名的优化。


【AD】CoalCloud(碳云)深圳移动大带宽VPS,9折优惠,142.2元/月,1C1G/300M带宽@3T月流量

【AD】美国洛杉矶/香港/日本VPS推荐,回程电信CN2 GIA线路,延迟低、稳定性高、免费备份_搬瓦工