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

如何无需身份验证限制WooCommerce店铺页面访问权限?

WooCommerce店铺页面基于HTTP_REFERER的访问限制

代码植入位置

直接将代码添加到子主题的functions.php文件中(优先用子主题,避免主题更新覆盖代码),或者创建一个简单的自定义插件。这里选用WordPress的template_redirect钩子——它会在页面模板加载前触发,刚好适合做访问拦截逻辑。

实现代码

add_action('template_redirect', 'restrict_woocommerce_via_referer');
function restrict_woocommerce_via_referer() {
    // 仅在WooCommerce相关页面执行拦截逻辑
    if (!is_woocommerce()) {
        return;
    }

    // 配置允许的来源:替换成你的会员专属页面URL,以及当前站点域名(允许店铺内跳转)
    $allowed_referrers = array(
        'https://your-domain.com/member-only-page/', // 会员页URL
        home_url() // 当前站点域名,确保店铺内页面跳转不受限
    );

    // 获取当前请求的来源地址
    $current_referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

    // 校验是否来自允许的来源
    $is_allowed = false;
    if (!empty($current_referer)) {
        foreach ($allowed_referrers as $allowed) {
            if (strpos($current_referer, $allowed) !== false) {
                $is_allowed = true;
                break;
            }
        }
    }

    // 不满足条件则跳转回会员页,或直接返回403
    if (!$is_allowed) {
        wp_redirect('https://your-domain.com/member-only-page/'); // 替换为你的会员页URL
        exit;
        // 若需要显示403页面,可替换上述两行:
        // wp_die('您无权访问此页面', '访问受限', array('response' => 403));
    }
}

关键细节说明

  • 精准页面控制:如果不需要限制所有WooCommerce页面,可将is_woocommerce()替换为更具体的条件,比如is_shop()(仅店铺首页)、is_product()(仅商品详情页)、is_product_category()(仅商品分类页)等。
  • HTTP_REFERER局限性:该字段可能被浏览器隐私设置屏蔽或手动篡改,仅适合低安全性要求的场景,完全匹配你的需求。
  • 店铺内跳转兼容:加入home_url()确保用户在店铺内点击链接时不会被拦截,避免影响正常浏览流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:25:28