gpt4 book ai didi

php - wp_signon 不起作用,因为移动到下一页让我没有用户登录

转载 作者:行者123 更新时间:2023-12-04 14:30:54 25 4
gpt4 key购买 nike

在我的 wordpress 项目中,我创建了用户可以注册的模板页面。现在我面临的问题是让用户在注册后登录。我创建了一个用户,之后我尝试使用以下代码让用户登录。

$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $password;
$creds['remember'] = true;
$user = wp_signon( $creds, false );

我还创建了一个登录模板,以允许用户使用上述相同的代码登录,但会出现相同的问题。现在我面临的问题是,一旦我移动到新页面,我发现用户没有登录。

我猜 cookies 没有得到保存。我也试过使用
wp_set_auth_cookie($user->ID,true);

但没有成功。

我无法理解我们何时使用 wp-admin 登录然后可以成功登录,或者如果我使用 wp_login_form() 那么这也可以正常工作。然后 wats 是使用上面的代码的问题。

请帮助,因为我必须无论如何让用户在注册后登录。

最佳答案

你的代码是正确的。这两段代码都将成功验证和登录用户。

但是,您缺少重定向。在调用 wp_signon() 或 wp_set_auth_cookie() 之后,您应该重定向用户以确保正在加载新的 cookie。

这可以通过在 wp_signon() 或 wp_set_auth_cookie() 调用后立即使用以下代码来完成:

wp_redirect($_SERVER['REQUEST_URI']);
exit;

如果您想将用户重定向到特定页面,您可以替换 $_SERVER['REQUEST_URI']使用您要将用户重定向到的 URL。

旁注:您应该确保在发送 header 之前调用此代码,因为在发送 header 后 wp_redirect() 将不起作用。

编辑:如果上述方法不起作用,您可以尝试整个登录过程( $user 应该是用户对象,您可以使用 get_user_by() 函数获得):
do_action('wp_login', $user->user_login, $user);
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID );
$redirect_to = $_SERVER['REQUEST_URI'];
wp_safe_redirect($redirect_to);
exit;

关于php - wp_signon 不起作用,因为移动到下一页让我没有用户登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25650301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com