WordPress怎么让上传的图片或者视频自动重命名呢?
通过在 functions.php 文件中添加以下代码即可生效。
add_filter( 'wp_handle_upload_prefilter', 'custom_upload_name' );
function custom_upload_name( $file ) {
$info = pathinfo( $file['name'] );
$ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
$name = basename( $file['name'], $ext );
$file['name'] = $name . '-' . uniqid() . $ext;
return $file;
}
这个命名规则是基于上传文件的原始文件名和一个唯一的字符串来生成新的文件名。具体来说,代码使用 pathinfo()
函数来获取原始文件名的信息,包括文件名和扩展名。然后,使用 basename()
函数获取文件名,但不包括扩展名。接着,使用 uniqid()
函数生成一个唯一的字符串作为文件名的一部分。最后,将这些信息组合起来,生成一个新的文件名。
这种命名方式可以避免上传同名的文件时出现冲突,而且保证了文件名的唯一性,防止了潜在的安全风险。
当然,我们也可以在命名规则中加入上传日期,以下是添加上传日期的修改版代码:
add_filter( 'wp_handle_upload_prefilter', 'custom_upload_name' );
function custom_upload_name( $file ) {
$info = pathinfo( $file['name'] );
$ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
$name = basename( $file['name'], $ext );
$date = date( 'YmdHis' );
$file['name'] = $date . '-' . $name . '-' . uniqid() . $ext;
return $file;
}
在这个修改版代码中,我们使用 date()
函数来获取当前日期和时间,并将其格式化为 YmdHis
(年月日时分秒)的格式。然后将日期时间、原始文件名和唯一字符串一起组合成新的文件名。
当然,还有一种就是文件名是中文名的,我们也可以使用urlencode()
函数对文件名进行编码,确保文件名中的中文字符不会出现错误。
add_filter( 'wp_handle_upload_prefilter', 'custom_upload_name' );
function custom_upload_name( $file ) {
$info = pathinfo( $file['name'] );
$ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
$name = basename( $file['name'], $ext );
$name = urlencode( $name ); // 对文件名进行编码
$date = date( 'YmdHis' );
$file['name'] = $date . '-' . $name . '-' . uniqid() . $ext;
return $file;
}
我们使用 urlencode()
函数对文件名进行编码,确保文件名中的中文字符不会出现错误。然后,将日期时间、编码后的文件名和唯一字符串一起组合成新的文件名。
这样,每次上传文件时,新文件名就会包括日期时间、编码后的文件名和唯一字符串的组合。这样可以更好地区分同名文件,方便管理和查找。
下面是效果图:
评论 (0)