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

WordPress可下载产品问题:免费文件需登录后直接下载防公开

WordPress免费可下载文件权限控制解决方案

针对你遇到的免费文件直接链接无权限验证的问题,给你两种实用解决方案:

一、自定义代码实现(无需插件,适合有基础的新手)

步骤1:给免费产品添加自定义字段

打开WordPress产品编辑页,滚动到页面底部的「自定义字段」区域,添加一个新字段:

  • 键名:free_download_file
  • 值:填入你上传到媒体库的免费文件的URL(复制媒体库文件的“永久链接”即可)
    如果看不到自定义字段,点击页面右上角的「选项」,勾选「自定义字段」。

步骤2:添加权限验证代码

用代码片段插件(比如Code Snippets,避免修改主题文件出错)或者主题的functions.php文件,添加以下代码:

// 处理免费下载请求的核心逻辑
add_action('init', 'handle_free_product_download');
function handle_free_product_download() {
    // 判断是否是免费下载请求
    if (isset($_GET['action']) && $_GET['action'] === 'free_download' && isset($_GET['product_id'])) {
        $product_id = intval($_GET['product_id']);
        $download_link = get_post_meta($product_id, 'free_download_file', true);
        
        // 检查下载链接是否有效
        if (empty($download_link)) {
            wp_die('抱歉,该产品没有可用的免费下载链接');
        }
        
        // 验证用户登录状态
        if (is_user_logged_in()) {
            // 可选:记录下载次数(方便统计)
            $current_count = get_post_meta($product_id, 'free_download_count', true);
            update_post_meta($product_id, 'free_download_count', (int)$current_count + 1);
            
            // 跳转到真实下载链接
            wp_redirect($download_link);
            exit;
        } else {
            // 未登录用户跳转到注册页(用WordPress默认注册地址,也可以替换成你的自定义注册页URL)
            wp_redirect(wp_registration_url());
            exit;
        }
    }
}

// 自动给免费产品添加下载按钮(可选,也可以手动在产品摘要加链接)
add_action('woocommerce_single_product_summary', 'render_free_download_button', 30);
function render_free_download_button() {
    global $product;
    $download_link = get_post_meta($product->get_id(), 'free_download_file', true);
    
    // 只给价格为0的可下载产品添加按钮
    if ($download_link && $product->is_type('downloadable') && $product->get_price() == 0) {
        $button_url = esc_url(add_query_arg(['action' => 'free_download', 'product_id' => $product->get_id()], home_url()));
        echo '<a href="' . $button_url . '" class="button alt">立即免费下载</a>';
    }
}

步骤3:替换旧链接

如果之前手动加了直接下载链接,删掉换成上面代码自动生成的按钮,或者手动写链接:你的站点域名/?action=free_download&product_id=产品ID

二、插件实现(纯新手友好)

安装并激活WooCommerce Free Downloads插件,然后:

  • 打开免费产品的编辑页,找到「产品数据」→「下载」选项卡
  • 勾选「允许免费下载」,然后在「访问限制」里选择「仅登录用户」
  • 更新产品后,插件会自动生成带权限验证的下载按钮,未登录用户点击会跳转到登录/注册页

注意事项

  • 不要直接在产品摘要里放文件的原始URL,必须通过验证逻辑跳转,防止链接泄露
  • 如果用代码方案,建议用Code Snippets插件管理代码,避免主题更新丢失代码
  • 可以给免费产品设置价格为0,方便代码或插件识别

内容的提问来源于stack exchange,提问作者Moh3n.As

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:35:19