通过添加自定义筛选器,可以将其分解为一个简单的任务。
您需要将以下内容添加到cloudfiles\\u Http中CF\\u Http类中的\\u send\\u request方法中。php第1283行。
$headers = $this->_make_headers($hdrs);
//Add this line below
$headers = apply_filters(\'cloudfiles_headers\', $headers, $url_path, $method);
这将允许您从插件访问标题,而不是对W3TC进行大量编辑。
在插件中,您可以创建如下函数:
add_filter(\'cloudfiles_headers\', \'wpse_42273_cloudfiles_headers\', 0, 3);
function wpse_42273_cloudfiles_headers($headers, $url_path, $method){
if($method != \'GET\')
return $headers;
if(preg_match_all(\'~^.*/(.+\\.(jpg|jpeg|png|gif|pdf|doc|docx|csv))$~i\', $url_path, $matches)){
$filename = $matches[1][0];
$headers[] = "Content-Disposition: attachment; filename=$filename";
}
return $headers;
}
如果W3TC正在获取一个具有上面正则表达式中列出的文件扩展名的对象,这将添加适当的头以强制下载。这是一种控制浏览器中提供哪些文件以及必须下载哪些文件的好方法。
您可以在我为方便您而创建的插件中尝试这一点。这可能需要一些调整,但我觉得你应该这样处理这个问题。
在此处下载插件:http://3-3.me/K4SL
最后一点,这显然是对W3TC插件核心的编辑(尽管只有一行代码)。这不是一个最佳实践,但它对您很有用。这意味着任何升级都将覆盖您的更改。重命名插件(在系统上创建一个fork)可能比较谨慎,这样WordPress就不会尝试更新它。
希望这对你有帮助!