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

WordPress联盟站点登出跳转:如何传递当前用户ID至推荐链接

WordPress联盟站点登出跳转传参问题解决

问题描述

运营WordPress联盟站点时,需要实现:已登录的联盟成员点击按钮后,自动登出(跳过确认页),并跳转至带自身用户ID作为推荐参数的联盟注册页面(因登录用户无法访问注册表单,必须先登出)。

当前已实现登出跳转功能,但无法正确传递用户ID,跳转URL显示为https://www.website.co/join-now/?ref=%20wp_get_current_user,未获取到真实用户ID。

原代码如下:

add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
     
     $user = wp_get_current_user();

    if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
        $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : '/join-now/?ref=echo".$user->user_login."';
        $location = str_replace('&', '&', wp_logout_url($redirect_to));
        header("Location: $location");
        die;
    }
}

问题原因

原代码中$redirect_to的默认值错误地将PHP代码写入字符串中,没有正确解析$user->user_login变量,导致直接输出了echo".$user->user_login."文本,而非实际用户信息。

修正后的代码

add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
    $user = wp_get_current_user();
    // 确认当前用户已登录
    if (!$user->ID) {
        return;
    }

    if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
        // 拼接带用户ID的跳转URL,如需用user_login可替换为$user->user_login
        $default_redirect = '/join-now/?ref=' . $user->ID;
        $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : $default_redirect;
        // 生成正确的登出跳转URL
        $location = wp_logout_url($redirect_to);
        // 修复HTML实体问题
        $location = str_replace('&', '&', $location);
        header("Location: $location");
        exit;
    }
}

关键修改说明

  1. 正确获取用户ID:通过$user->ID获取当前登录用户的ID,若需要传递用户登录名可替换为$user->user_login。
  2. 变量字符串拼接:使用字符串连接符.将用户ID插入跳转URL中,确保变量被正确解析。
  3. 增加登录判断:添加!$user->ID的判断,避免未登录时执行逻辑。
  4. 规范终止语句:用exit替代die,更符合WordPress开发规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:27:18