WordPress页面重定向求助:非指定来源访问拦截跳转
WordPress注册流程页面定向限制方案
你可以通过WordPress的template_redirect钩子实现这个需求,核心逻辑是检查用户的访问来源,仅允许从指定流程页面进入目标页面,否则强制重定向到流程起始页。
具体实现代码
将以下代码添加到主题的functions.php文件,或者使用自定义代码插件:
add_action('template_redirect', 'restrict_registration_flow_pages'); function restrict_registration_flow_pages() { // 定义限制规则:键为需要限制的页面路径,值为允许的来源页面路径 $restricted_pages = array( '/join/payment-setup/' => '/join/' // 可扩展更多规则,比如 '/join/account-confirm/' => '/join/payment-setup/' ); // 获取当前请求的页面路径 $current_path = '/' . trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/') . '/'; // 匹配当前页面是否在限制列表中 if (array_key_exists($current_path, $restricted_pages)) { $allowed_referer = home_url($restricted_pages[$current_path]); $referer = wp_get_referer(); // 若来源不匹配或无来源(直接访问),执行重定向 if (!$referer || strpos($referer, $allowed_referer) === false) { wp_redirect(home_url($restricted_pages[$current_path])); exit; } } }
补充说明
- 扩展规则只需在
$restricted_pages数组中添加新的键值对,即可实现多步骤的流程限制。 wp_get_referer()是WordPress封装的安全函数,比直接读取$_SERVER['HTTP_REFERER']更可靠。- 若用户浏览器禁用了Referer发送,所有直接访问都会被判定为不符合规则并触发重定向,这符合流程限制的预期逻辑。
内容的提问来源于stack exchange,提问作者BadScooter1980
相关产品推荐
相关产品推荐

