是否在上载过程中使用日期和时间戳重命名图像?

时间:2016-08-14 作者:Advanced SEO

我试图在上传过程中重命名图像,以避免图像文件名包含特殊字符和文件名包含非拉丁字符的问题。

我发现此函数rename images in WordPress:

function sanitize_file_uploads( $file ){
    $file[\'name\'] = sanitize_file_name($file[\'name\']);
    $file[\'name\'] = preg_replace("/[^a-zA-Z0-9\\_\\-\\.]/", "", $file[\'name\']);
    $file[\'name\'] = strtolower($file[\'name\']);
    add_filter(\'sanitize_file_name\', \'remove_accents\');

    return $file;
}
add_filter(\'wp_handle_upload_prefilter\', \'sanitize_file_uploads\');
它将删除不可接受的特殊字符,将名称转换为小写,并删除重音符号。但,例如,若图像只有非拉丁字符,它将创建如下图像文件名:jpg width heigh。jpg(宽度和高度是图像的尺寸)。

我想有基于当前日期和时间的图像文件名,如:年-月-日-时-分-秒。jpg公司

我知道有一个插头可以做到这一点file renaming on upload, 但我不想仅仅为了这个而使用插件。

有没有人有解决方案,想法?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

例如,您可以从pathinfo, 自定义消毒后。

Example:

如果文件名为空且扩展名为非空,则将格式化的当前时间添加为文件名部分:

$info = pathinfo( $file[\'name\'] );
if( empty( $info[\'filename\'] ) && ! empty( $info[\'extension\'] ) )
    $file[\'name\'] = sprintf( \'%s.%s\', current_time( \'Y-m-d-H-i-s\' ), $info[\'extension\'] );
如果文件áéíú.png 被剥离为.png 使用自定义清理,则将其重命名为2016-08-14-10-54-07.png

请注意,如果在同一秒内导入另一个此类文件,则wp_unique_filename() 将向文件名部分添加-1,以便将其重命名为2016-08-14-10-54-07-1.png. 第三个文件将-2 追加等。

希望您可以根据您的需要进一步调整此选项。

相关推荐

Wordpress cutting images size

我目前正在制作一个页面的横幅,过了一段时间,我注意到我的图像质量比我预期的稍差一些。我上传了1920x1024大小的图片,但在我查看管理仪表板后,我注意到它们已经缩小到1024x575!这有什么原因吗?有什么办法可以防止这种情况发生吗?提前感谢!