在我的 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/