我试图在上传过程中重命名图像,以避免图像文件名包含特殊字符和文件名包含非拉丁字符的问题。
我发现此函数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, 但我不想仅仅为了这个而使用插件。
有没有人有解决方案,想法?
最合适的回答,由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
追加等。
希望您可以根据您的需要进一步调整此选项。