一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

WordPress实现上传图片自动随机重命名

时间:2016-10-30 编辑:简简单单 来源:一聚教程网

除了我们可能需要的特殊功能之外,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-admin\includes\ 下载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上传图片自动重命名了。

以上代码意思就是,保存后覆盖原文件,那么上传文件就会以“年月日时分秒+千位毫秒整数”的格式重命名文件。这就再也不用担心图片文件名相同而覆盖了原文件。

热门栏目