首页 > WP教程 > 正文

最新在使用wordpress中发现发表文章上传的图片时候发现图片名称使用的本地图片的名称,这样的话就会出现很多的弊端,原图片名称中出现中文字符,图片名称和很久以前上传的图片的名称一样等等问题肯定会出现,往往会造成图片不显示,图片覆盖等一系列的问题,今天Csyor就告诉大家上传图片生成特定格式名称的方法。

第一种方法是修改WP源码,升级WP时候会被覆盖掉,不推荐使用,非要使用的话就必须备份

1、打开wp-adminincludes里面的file.php文件。

2、在文件中查找到下面的代码

$filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );

3、把上面的代码替换成一下的代码

$time_filename = ''; 
if ( $time ) {//如果发布时间存在,按发表时间命名。 
    $time_filename = $time; 
    $time_filename = str_replace(array('-', ' ', ':'), '', $time_filename);//字符串替代 
} else { 
    $deftimezone = date_default_timezone_get();//获得原有时区 
    date_default_timezone_set("PRC");//设置为中国时区 
    $time_filename = date('YmdHis');//按时间命名 
    date_default_timezone_set($deftimezone);//恢复原有时区设置(不想打乱程序) 
}
$filename = $time_filename.dechex(mt_rand(65536,1048575)).'.'.$ext; 
//时间+随机16进制5位数(0x10000-0xFFFFF).
//最终生成格式如:20120330155959a368f.ext

第一种方法出自网络,本人并未测试,而且Csyor强烈不推荐此种方法,Csyor一贯奉行“在不改动WP程序源码能够实现功能的情况下坚决不改动!”。

第二种方法使用filter添加函数更改上传图片名称,也是Csyor推荐大家使用的方法

1、打开当前使用主题的function.php文件

2、在<?php和?>标签中添加以下代码

//随机生成上传图片的名称
function csyor_build_upload_filename($file){
    $time=date("YmdHis",mktime() + 8 * 3600);
    $file['name'] = $time."".mt_rand(10,99).".".pathinfo($file['name'] , PATHINFO_EXTENSION);
    return $file;
}
add_filter('wp_handle_upload_prefilter', 'csyor_build_upload_filename');

到这里,第二种方法已经OK了,此种方法Csyor当前就在使用,上面代码是把上传图片名称修改为时间格式(YYYYMMDD-HHMMSS+随机两位数),相比来说比第一种方法简单,而且明显的优于第一种方法,因为这种方法是在当前主题中,不用考虑WP的升级和更换主题等等问题。当然,想要修改称自己喜欢的格式只需要更能改对应格式生成代码。

以上内容来自于网络,如有侵权联系即删除。

猜你喜欢
发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论信息