2个方法实现WordPress上传图片文件自动重命名(防止文件名重复和中文名)

WordPress 技巧,就是在我们上传图片的时候,能够让图片的名称自动变成英文或数字。

具体有根据上传时间命名和MD5转码文件名为32位字符串两种格式的文件命名方法,只能二选一。

1、时间戳重命名

// wordpress上传文件重命名
function git_upload_filter($file) {
$time = date("YmdHis");
$file['name'] = $time . "" . mt_rand(1, 100) . "." . pathinfo($file['name'], PATHINFO_EXTENSION);
return $file;
}
add_filter('wp_handle_upload_prefilter', 'git_upload_filter');

2、MD5加密名称

//MD5加密命名
function rename_filename($filename) {
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
return substr(md5($name), 0, 20) . $ext;
}
add_filter('sanitize_file_name', 'rename_filename', 10);

使用方法

将代码添加到所使用主题的 functions.php 文件中即可。

以上两种方法实现WordPress上传图片自动重命名的方法只能二选一,不可同时使用两种方法,要不然出错的话后果自负哦。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用 WordPress 的过滤器函数 `wp_handle_upload_prefilter` 和 `wp_handle_upload` 来实现根据文件类型自动存储到对应目录的功能。 首先,您需要在 `functions.php` 文件中添加以下代码: ```php function custom_upload_dir($dirs) { $file_types = array( 'jpg|jpeg|jpe' => 'images', 'gif' => 'images', 'png' => 'images', 'bmp' => 'images', 'tif|tiff' => 'images', 'ico' => 'images', 'pdf' => 'documents', 'doc|docx' => 'documents', 'ppt|pptx' => 'documents', 'odt' => 'documents', 'mp3|m4a|aac' => 'audio', 'wma' => 'audio', 'wav' => 'audio', 'mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2' => 'videos' ); $file_ext = strtolower(pathinfo($_REQUEST['name'], PATHINFO_EXTENSION)); foreach ($file_types as $type => $dir) { if (preg_match('/^' . $type . '$/', $file_ext)) { $dirs['path'] = $dirs['basedir'] . '/' . $dir; $dirs['url'] = $dirs['baseurl'] . '/' . $dir; $dirs['subdir'] = '/' . $dir; break; } } return $dirs; } add_filter('upload_dir', 'custom_upload_dir'); function custom_handle_upload($file) { $file_types = array( 'jpg|jpeg|jpe' => 'images', 'gif' => 'images', 'png' => 'images', 'bmp' => 'images', 'tif|tiff' => 'images', 'ico' => 'images', 'pdf' => 'documents', 'doc|docx' => 'documents', 'ppt|pptx' => 'documents', 'odt' => 'documents', 'mp3|m4a|aac' => 'audio', 'wma' => 'audio', 'wav' => 'audio', 'mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2' => 'videos' ); $file_ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); foreach ($file_types as $type => $dir) { if (preg_match('/^' . $type . '$/', $file_ext)) { $subdir = '/' . $dir; $dir = wp_upload_dir(); if (!file_exists($dir['basedir'] . $subdir)) { wp_mkdir_p($dir['basedir'] . $subdir); } $path_parts = pathinfo($file['name']); $new_file_name = $path_parts['filename'] . '_' . uniqid() . '.' . $path_parts['extension']; $file['name'] = $new_file_name; $file['path'] = $dir['basedir'] . $subdir . '/' . $new_file_name; $file['url'] = $dir['baseurl'] . $subdir . '/' . $new_file_name; break; } } return $file; } add_filter('wp_handle_upload_prefilter', 'custom_handle_upload'); ``` 这段代码定义了一个 `$file_types` 数组,其中包含各种文件类型及其相应的目录。每次上传文件时,WordPress 将使用 `wp_handle_upload_prefilter` 过滤器函数来检查文件类型,并使用 `wp_handle_upload` 函数将文件存储到相应的目录中。 注意,这段代码中使用了 `preg_match` 函数来检查文件类型,因此您需要确保 `$file_types` 数组中包含所有您想要支持的文件类型及其相应的正则表达式。 希望这能帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值