最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
WordPress实现上传图片自动随机重命名
时间:2022-06-25 18:35:58 编辑:袖梨 来源:一聚教程网
除了我们可能需要的特殊功能之外,WordPress普通用户要实现某个效果和功能,基本上都可以找到合适的插件或者文档解决方法。因为公司客户大部分网站都采用WordPress搭建的,有些网站交付到客户手工是由他们自己维护更新内容,这里有一个问题需要解决,比如产品和内容图片设计后上传的时候有些时候他们用的中文名或者其他命名。
由于可能存在特殊符号、中文名,会导致界面中无法打开,所以老蒋想到直接给他们上传图片采用随机数字命名方式。本来是可以用到File Renaming on upload插件实现的,但是能减少插件就减少,所以我直接采用无插件的方式。
function rename_upload_img($file) {
$time=date("Y-m-d H:i:s");
$file['name'] = $time."".mt_rand(100,999).".".pathinfo($file['name'] , PATHINFO_EXTENSION);
return $file;
}
add_filter('wp_handle_upload_prefilter', 'rename_upload_img');
将上面脚本上传到当前主题的functions.php文件中,然后我们在编辑文章的时候上传图片会自动重命名成日期+随机数字的方式。
代码实现方法:
到 根目录wp-adminincludes 下载file.php到本地,用notepad++打开这个文件,用CTRL+F 搜索 $filename = wp_unique_filename( $uploads[‘path’], $file[‘name’], $unique_filename_callback ); 在此句$filename赋值前添加代码如下:
// 更改图片名称
$name = basename($filename, $ext); $time=substr(md5($name), 0, 20);$type_change = array('image'=>'.');$file_type = strtr($file['type'],$type_change);
$file['name'] = $time.''.mt_rand(1,100).''.$file_type ; $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
// Move the file to the uploads dir
方法 三
1、 使用FTP工具连接你的php虚拟主机,找到wordpress程序的根目录下的/wp-admin/includes/file.php文件,编辑,找到以下代码,如下图所示 (你也可以使用搜索功能,搜索Move the file to the uploads dir)
// Move the file to the uploads dir
$new_file = $uploads[‘path’] . “/$filename”;
if ( false === @ move_uploaded_file( $file[‘tmp_name’], $new_file ) ) {
if ( 0 === strpos( $uploads[‘basedir’], ABSPATH ) )
$error_path = str_replace( ABSPATH, ”, $uploads[‘basedir’] ) . $uploads[‘subdir’];
else
$error_path = basename( $uploads[‘basedir’] ) . $uploads[‘subdir’];
return $upload_error_handler( $file, sprintf( __(‘The uploaded file could not be moved to %s.’ ), $error_path ) );
}
2、将上述代码替换为:(当然你也可以装上述代码注释,方便以后还原)
// Move the file to the uploads dir
// $new_file = $uploads[‘path’] . “/$filename”;
$new_file = $uploads[‘path’] . “/”.date(“YmdHis”).floor(microtime()*1000).”.”.$ext;
if ( false === @ move_uploaded_file( $file[‘tmp_name’], $new_file ) ) {
if ( 0 === strpos( $uploads[‘basedir’], ABSPATH ) )
$error_path = str_replace( ABSPATH, ”, $uploads[‘basedir’] ) . $uploads[‘subdir’];
else
$error_path = basename( $uploads[‘basedir’] ) . $uploads[‘subdir’];
return $upload_error_handler( $file, sprintf( __(‘The uploaded file could not be moved to %s.’ ), $error_path ) );
}
主要是将第一句替换成第二句语句即可
$new_file = $uploads[‘path’] . “/$filename”;
$new_file = $uploads[‘path’] . “/”.date(“YmdHis”).floor(microtime()*1000).”.”.$ext;
3、保存file.php,这样就可以实现wordpress上传图片自动重命名了。
以上代码意思就是,保存后覆盖原文件,那么上传文件就会以“年月日时分秒+千位毫秒整数”的格式重命名文件。这就再也不用担心图片文件名相同而覆盖了原文件。
相关文章
- 《无限暖暖》天星之羽获得位置介绍 12-20
- 《流放之路2》重铸台解锁方法介绍 12-20
- 《无限暖暖》瞄准那个亮亮的成就怎么做 12-20
- 《无限暖暖》魔气怪终结者完成方法 12-20
- 《无限暖暖》曙光毛团获得位置介绍 12-20
- 《无限暖暖》日光果获得位置介绍 12-20