当前位置: 首页 > WP教程 > 正文

wordpress上传图片生成特定格式名称方法

收藏文章Loading
收藏
(59)

最新在使用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的升级和更换主题等等问题。当然,想要修改称自己喜欢的格式只需要更能改对应格式生成代码。

本文固定链接: http://www.csyor.com/375.html - 穿梭于偶然

该日志由 Csyor 于2014年02月03日发表在 WP教程 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: wordpress上传图片生成特定格式名称方法 - 穿梭于偶然
关键字: , ,

wordpress上传图片生成特定格式名称方法:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter