这几天用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程序的一些功能呀!今天把这种方法写到这里希望可以帮助到遇到跟我一样问题的朋友!

php图片传入及改名代码,WordPress上传中文名图片自动重命名相关推荐

  1. php图片传入及改名代码,WordPress添加媒体中文名图片上传改名(优化版)

    WordPress是国外程序,对中文命名的图片不友好,所以上传后就会出现错误.但是我们有时候保存在桌面或者其他地方的图片就是中文命名,现在要上传到WordPress多媒体中,或者上传到文章中,我们改怎 ...

  2. 处理wordpress上传中文名附件乱码问题

    很多网友问wordpress上传中文名附件乱码问题如何解决,正好闲来无事,在谷歌刨了半天找出一段处理wordpress上传中文名附件乱码问题的代码: 1 function upload_file($f ...

  3. php将上传的图片转为base64,html5实现把上传的图片转成base64编码在显示(代码实例)...

    本章给大家介绍html5实现把上传的图片转成base64编码在显示(代码实例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 首先我们来详细的看一看base64编码: 什么是bas ...

  4. php 图片无法删除,php如何删除上传的图片

    php删除上传的图片的方法:首先检查上传文件是否在允许上传的类型:然后获取图片的完整路径:最后通过"unlink("uppic/".$img);"方法删除图片即 ...

  5. ECSHOP商品编辑器上传中文名图片产生乱码

    2019独角兽企业重金招聘Python工程师标准>>> 在后台上传商品图片的时候,如果你选择一个中文名称的图片,那么上传后会产生乱码,导致图片显示不出来. 下面说一种解决办法: 使用 ...

  6. php 上传加水印图片格式,用PHP实现给上传的图片加水印的代码_PHP

    $uptypes=array('image/jpg','image/jpeg','image/pjpeg','image/gif');//上传图片文件类型列表 $wFile="a.jpg&q ...

  7. java 生成水印图片工具类, MultipartFile接收上传的图片,处理成加水印之后的MultipartFile

    /*** Created by Administrator on 2018/4/26.* JAVA图片处理工具*/ public class ImageUtil {public enum positi ...

  8. (转)C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)

    转自:http://blog.csdn.net/hejialin666/article/details/3522815 1 using System; 2 using System.Collectio ...

  9. C#编程, FTP文件上传、下载、重命名公共类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

最新文章

  1. (转自scrum中文网)给Scrum Master的十个建议,你值得拥有
  2. flask mysql 版本_Flask mysql
  3. ARKit从入门到精通(4)-ARKit全框架API大全
  4. Winform跨线程调用简洁办法
  5. 计算机科学概论(2)数据的操控和程序的执行
  6. 关于tag,viewWithTag
  7. mysql数据库(10):数据 备份
  8. 2020年Q3最具社交影响力KOL盘点报告
  9. linux makefile详解
  10. 线程:信号量 sem_wait sem_post
  11. mysql dr模式_DR模式下的mysql (abb读写分离)
  12. linux之--install超时
  13. 苹果Mac侧边栏笔记工具:​​​​​​​​SideNotes
  14. 利用Java手写简单的httpserver
  15. Zend Studio小技巧:自动生成版本信息
  16. html中div弹出显示
  17. C++中this指针
  18. ie浏览器服务器无响应怎么办,ie浏览器无响应怎么办
  19. Arduino手自两用蓝牙避障小车
  20. 小米手机解锁 usb3.0状态下

热门文章

  1. C++(数据结构与算法):52---平衡搜索树之分裂树/伸展树
  2. arduino按键控制LED 灯(按一下切换一次状态)
  3. 文件摆渡如何实现自动化传输?
  4. S32K144:3.串口实验
  5. 【python入门篇——12】三级菜单详解
  6. Unity打包 iOS屏幕镜像失败的解决方法
  7. Mac环境下生成ssh密钥
  8. 目标检测 YOLOv5 - v6.2版本模型在瑞芯微 Rockchip设备从训练到C++部署实践
  9. 录音转文字助手怎么使用?两分钟轻松学会,步骤详解
  10. Opencv:Task01:Opencv基本了解、图像读取和绘图