wordpress中文附件乱码问题


前言: 在解决问题时,我也检索了网上相关解决办法。

其中有一个是修改file.php的两处

a 、

$new_file = $uploads['path'] . "/$filename";
// 把上一行换为下一行,解决上传文件中文乱码问题
$new_file = $uploads['path'] ."/".iconv("UTF-8","GBK",$filename);
b、修改
return apply_filters( 'wp_handle_upload', array(

函数



但是,事实证明,这个方法有漏洞,一个是上传文件的title是中文的urlencode编码,

一个是上传的中文附件显示删除成功,但服务器的文件没有删除


最后咨询了公司的张大神,他给出以下解决方案,很好用!

1、在themes下的function.php加入以下代码
意思是文件重命名,在文件系统里保存的文件名是随机字符串。
/*
*====================================================
*wp-admin 后台上传文件重命名附件
* ====================================================
*/
function make_filename_hash($filename) {
   $info = pathinfo($filename);
   $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
   $name = basename($filename, $ext);
   return date("Ymd").'_'.substr(md5($name.date("His")), 0,10).$ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);


2、修改保存以下文件,把title中中文乱码 用urlDecoder解码。


E:\apache24_hotdocs\wordpress\wp-admin\includes\media.php  
大约365行
// Construct the attachment array
$attachment = array_merge( array(
'post_mime_type' => $type,
'guid' => $url,
'post_parent' => $post_id,
// @author jiabaochina 2016年10月11日17:03:11    上传文件的title url解码
'post_title' => urldecode($title),
'post_content' => $content,
'post_excerpt' => $excerpt,
), $post_data );
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值