建站技术网专注分享网站建设技术,网站建设教程,真正帮你学会做网站技术,轻松解决网站建设过程中遇到的常见问题,为广大站长服务。 网站地图 | 收藏本站 | 订阅
域名投资,就来找米网,认准网址:www.zhaomi.cc 专业仿站,就到仿站网:www.fangzhan.org
  站内公告: ·帝国cms教程内容已更新,欢迎关注     ·建站技术网采用阿里云服务器,备案已通    
您当前的位置:建站技术网 > cms教程 > Wordpress教程

WordPress上传中文名图片自动重命名

时间:2019-10-25 16:44:13  来源:网络收集  整理: 建站技术网 www.jzjsw.com     点击:0次

  这几天用Wordpress搭建了一个图片站,在填充内容时遇到一个问题当我在媒体库中上传图片时有些图片可以正常显示,但是个别图片就是显示不出来缩略图,这个问题着实让我纠结了一下午。没办法查找原因少不了研究代码,默默的戴上眼镜勤奋工作吧!

  图片不显示的原因俗话说:“功夫不负苦心人呢”,问题还是被我给发现了,原来编码的问题如果我们上传的图片名称是中文的那么wp的缩略图机制处理不了于是就出现了我这样的问题。

  在wp-admin/includes/file.php文件中有这么一段代码其中第2行控制着我们上传图片的命名:

  // 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 ) );

  }

  既然定位到了问题所在当然就是赶紧解决掉好让图片正常显示了!

  处理方法汇总问题既然浮出了水面,按照一个度娘的忠实粉丝当然是先上百度去找答案,下面是百度查找到的3种答案。

  第一种:修改wp的程序文件file.php

  在file.php中查找下面这段代码

  $new_file = $uploads[‘path’] . “/$filename”;

  把上述代码修改成

  $new_file = $uploads[‘path’] . “/”.date(“YmdHis”).floor(microtime()*1000).“.”.$ext;

  显示的结果是以“年月日时分秒+千位毫秒整数”这样的格式命名的。

  这 种方法弊端很大:第一上传的图片全部都会重命名;第二wp更新到新版本还要重新修改代码。

  第二种:在主题functions.php中添加代码

  function wpyou_rename_upload_file_prefilter($file){

  $time=date(“Y-m-d”);

  $file[‘name’] = $time.“”.mt_rand(1,100).“.”.pathinfo($file[‘name’] , PATHINFO_EXTENSION);

  return $file;

  }

  add_filter(‘wp_handle_upload_prefilter’, ‘wpyou_rename_upload_file_prefilter’);

  实现的效果和第一种的结果是一样的,这样每次更新wp都不用再反复修改程序文件了,但是弊端还是有就是上传的图片全部都会重命名。

  完美的解决方法如果按照上面的方法修改的话我上传的图片都要被重命名对于我这种用云盘来存储图片的用户来说是个麻烦,于是只能自己动手了。下面给出一种完美的解决方案,当你上传图片时,主题会检测图片名中是否包含中文字符,如果包含就执行重命名的机制,如果不包含那么直接用上传的名称作为图片名,直接添加下面这段代码到主题的functions.php文件中即可。

  /*

  代码功能:中文名图片上传改名

  代码介绍:http://chenxingweb.com/wordpress-uploads-zh-move.html

  */

  function tin_custom_upload_name($file){

  if(preg_match(‘/[一-龥]/u’,$file[‘name’])):

  $ext=ltrim(strrchr($file[‘name’],‘.’),‘.’);

  $file[‘name’]=preg_replace(‘#^www\.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])).’_’.date(‘Y-m-d_H-i-s’).‘.’.$ext;

  endif;

  return $file;

  }

  add_filter(‘wp_handle_upload_prefilter’,’tin_custom_upload_name’,5,1);

  通过上面的代码片段中文图片不能显示缩略图的问题终于完美解决了。看来以后还是要研究一下wp程序的一些功能呀!今天把这种方法写到这里希望可以帮助到遇到跟我一样问题的朋友!


标签:WordPress  上传  中文名  图片  自动  重命名
文章标题:WordPress上传中文名图片自动重命名
文章网址:http://www.jzjsw.com/cmsJiaocheng/Wordpress/11515.html
上一篇:Directory "xxx" is writeable by group错误的解决办法
下一篇:wordpress 迁移后,上传文件失败的问题解决
来顶一下
返回首页
返回首页
相关文章
推荐资讯
我是如何通过开源项目月入 10 万的?
我是如何通过开源项目
如何通过SEO优化排名赚钱?SEO赚钱方法
如何通过SEO优化排名赚
seo优化教程:网站seo内容优化
seo优化教程:网站seo
SEO细节:企业SEO如何快速为新站做出效果
SEO细节:企业SEO如何
最新文章
栏目更新
栏目热门