You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求优化WooCommerce感谢页电子书下载链接:实现强制自动下载

WooCommerce移动端强制下载电子书解决方案

针对iPhone Safari等移动浏览器无法自动下载电子书、而是直接打开的问题,可通过以下几种方式解决:

方法1:修改服务器.htaccess文件(Apache服务器适用)

在网站根目录的.htaccess文件中添加以下规则,针对电子书常见格式(如epub、mobi、pdf)强制触发下载:

<FilesMatch "\.(epub|mobi|pdf)$">
    Header set Content-Disposition "attachment"
</FilesMatch>

这段代码会让服务器对指定格式的文件返回Content-Disposition: attachment响应头,告诉浏览器直接下载而非打开。

方法2:通过WooCommerce钩子修改下载响应

在主题的functions.php文件中添加以下代码,利用WooCommerce的下载钩子强制设置响应头:

add_filter('woocommerce_download_file', 'force_mobile_download', 10, 3);
function force_mobile_download($file_path, $product_id, $download_id) {
    // 获取文件扩展名
    $file_ext = pathinfo($file_path, PATHINFO_EXTENSION);
    // 针对电子书格式设置强制下载头
    if(in_array($file_ext, ['epub', 'mobi', 'pdf'])) {
        header('Content-Disposition: attachment; filename="'.basename($file_path).'"');
    }
    return $file_path;
}

该代码会在处理WooCommerce下载请求时,自动为指定格式的文件添加强制下载的响应头,覆盖浏览器的默认打开行为。

方法3:为下载链接添加HTML5 download属性

通过钩子修改感谢页上的下载链接,添加HTML5的download属性,强制浏览器触发下载:

add_filter('woocommerce_order_downloads_args', 'add_download_attribute_to_links');
function add_download_attribute_to_links($args) {
    $args['attributes']['download'] = '';
    return $args;
}

这个方法会给感谢页上的所有订单下载链接加上download属性,部分移动浏览器会优先遵循这个属性触发下载。

注意:修改主题文件前建议先备份,或者使用子主题避免主题更新时代码丢失;如果是Nginx服务器,需要在nginx.conf或站点配置文件中添加类似的响应头规则,替换.htaccess的方法。

内容的提问来源于stack exchange,提问作者Majlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:50:37