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

如何为WooCommerce可下载PDF设置移动端App深度链接?

实现WooCommerce移动设备自动切换App深度链接下载

嘿,这个需求很实用,我们可以通过WooCommerce的钩子函数结合设备检测来轻松实现。下面是具体的步骤和代码方案:

1. 核心思路

我们要拦截WooCommerce生成的默认下载链接,根据访问设备类型动态替换:

  • 非移动设备:保留原PDF下载链接
  • 移动设备:替换为你的自定义URI协议(比如yourapp://download?file=xxx这类App深度链接)

2. 代码实现

你可以把下面的代码添加到主题的functions.php文件,更推荐的方式是创建一个简单的自定义插件(避免主题更新导致代码丢失)。

基础版本(使用WordPress自带设备检测)

// 替换WooCommerce下载链接:移动设备用深度链接,非移动用原链接
function wc_switch_mobile_download_link( $download_url, $product, $download ) {
    // 检测是否为移动设备(WordPress自带函数,包含平板)
    if ( wp_is_mobile() ) {
        // 替换为你的自定义URI协议,这里可以根据下载项的ID或文件URL拼接参数
        $download_id = $download->get_id();
        $file_url = $download->get_file();
        // 示例:自定义URI,传递文件ID和原URL作为参数
        $custom_deeplink = "yourapp://download?file_id={$download_id}&source_url=" . urlencode($file_url);
        return $custom_deeplink;
    }
    // 非移动设备返回原下载链接
    return $download_url;
}
// 挂载到WooCommerce获取下载文件URL的钩子
add_filter( 'woocommerce_get_download_file_url', 'wc_switch_mobile_download_link', 10, 3 );

进阶版本(排除平板,仅针对手机)

如果wp_is_mobile()会把平板识别为移动设备,而你只想针对手机切换链接,可以自定义更精确的设备检测函数:

// 自定义检测:仅识别手机(排除平板)
function is_mobile_phone_only() {
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    // 匹配手机UA,排除平板UA
    return preg_match('/(android|iphone|ipod|blackberry|opera mini|opera mobi|skyfire|maemo|windows phone|palm|iemobile|symbian|symbianos|fennec)/i', $user_agent) 
           && !preg_match('/(ipad|android 3.0|xoom|sch-i800|playbook|tablet)/i', $user_agent);
}

// 替换下载链接
function wc_switch_phone_download_link( $download_url, $product, $download ) {
    if ( is_mobile_phone_only() ) {
        $download_id = $download->get_id();
        $custom_deeplink = "yourapp://download?file_id={$download_id}";
        return $custom_deeplink;
    }
    return $download_url;
}
add_filter( 'woocommerce_get_download_file_url', 'wc_switch_phone_download_link', 10, 3 );

3. 覆盖更多场景

上面的代码会修改订单详情页、"我的账户-下载"页面的下载链接。如果你还想修改结账完成感谢页的下载按钮链接,可以再添加这个钩子:

// 修改感谢页的下载链接
function wc_thankyou_page_mobile_download_link( $download ) {
    if ( wp_is_mobile() ) {
        $download_id = $download['id'];
        $download_object = wc_get_download($download_id);
        $custom_deeplink = "yourapp://download?file_id={$download_id}";
        $download['download_url'] = $custom_deeplink;
    }
    return $download;
}
add_filter( 'woocommerce_order_downloads', 'wc_thankyou_page_mobile_download_link', 10, 1 );

4. 测试建议

  • 用浏览器开发者工具切换到移动设备模式,刷新下载页面查看链接变化
  • 用真实手机访问测试,确保深度链接能正常唤起你的App
  • 如果需要处理"未安装App"的 fallback,可以在App端配置,或者通过JS做延迟跳转(比如点击后2秒没唤起App就自动跳转到常规下载)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:16:34