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

WordPress 5.7版本添加新用户后重定向失效的解决方法

解决WordPress 5.7添加用户后重定向到正确编辑页面的问题

你的代码在WordPress 5.7失效主要有几个核心原因:

  • get_userdatabylogin()函数在5.7版本已被弃用,官方推荐使用get_user_by()替代
  • 原逻辑依赖usersearch参数的判断完全不准确——添加用户成功后,WordPress默认跳转的users.php携带的是update=add和id参数,而非usersearch
  • admin_init钩子时机过早,容易被其他后台操作干扰,导致重定向逻辑误触发

下面是修改后的完整代码,能精准实现添加用户后跳转到目标编辑页面的需求:

add_action('admin_init', 'redirect_after_user_add');
function redirect_after_user_add() {
    // 仅在添加用户成功后的跳转场景触发
    if (isset($_GET['page'], $_GET['update'], $_GET['id']) 
        && $_GET['page'] === 'users' 
        && $_GET['update'] === 'add') {
        
        $user_id = intval($_GET['id']);
        // 验证用户ID有效性,避免非法参数
        if ($user_id > 0 && get_user_by('id', $user_id)) {
            wp_safe_redirect(admin_url("user-edit.php?user_id={$user_id}"));
            exit; // 必须调用exit终止后续执行,否则重定向可能失效
        }
    }
}

关键改动说明:

  • 替换弃用函数:直接通过用户ID用get_user_by('id', $user_id)获取用户,更高效且符合新版WordPress规范
  • 精准触发条件:通过page=users、update=add和id三个参数组合判断,确保只有在添加用户成功的场景下才执行重定向
  • 安全重定向:用wp_safe_redirect()替代wp_redirect(),会自动验证目标URL属于当前站点,避免恶意跳转风险
  • 强制终止执行:重定向后必须调用exit,阻止WordPress继续执行后续代码,保证重定向生效

如果你想要更简洁可靠的实现方式,推荐使用user_register动作钩子——它会在用户创建成功后立即触发,不需要额外判断URL参数:

add_action('user_register', 'redirect_after_user_register');
function redirect_after_user_register($user_id) {
    // 仅在后台添加用户时执行重定向
    if (is_admin()) {
        wp_safe_redirect(admin_url("user-edit.php?user_id={$user_id}"));
        exit;
    }
}

这个版本逻辑更直接,完全贴合"用户创建后立即跳转"的需求,稳定性更高。

内容的提问来源于stack exchange,提问作者Musa Baltacı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:04:11