在我的wordpress项目中,我创建了用户可以注册的模板页面.现在我面临的问题是让用户在注册后登录.我创建了一个用户,之后我尝试使用下面的代码让用户登录.
$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $password;
$creds['remember'] = true;
$user = wp_signon( $creds, false );
Run Code Online (Sandbox Code Playgroud)
我还创建了一个登录模板,允许用户使用相同的上述代码进入,但会出现同样的问题.现在我面临的问题是,一旦我移动到新页面,我发现用户没有登录.
我猜饼干没有得到保存.我也试过用
wp_set_auth_cookie($user->ID,true);
Run Code Online (Sandbox Code Playgroud)
但没有成功.
我无法理解当我们使用wp-admin登录然后可以成功登录或者如果我使用wp_login_form()那么这也可以正常工作.然后通过使用上面的代码来解决问题.
请帮助,因为我必须让用户登录后登录.
你的代码是正确的.这两段代码都将进行身份验证并成功登录用户.
但是你错过了重定向.在调用wp_signon()或wp_set_auth_cookie()之后,您应该重定向用户以确保正在加载新cookie.
这可以通过在wp_signon()或wp_set_auth_cookie()调用之后立即使用以下代码来完成:
wp_redirect($_SERVER['REQUEST_URI']);
exit;
Run Code Online (Sandbox Code Playgroud)
如果要将用户重定向到特定页面,可以$_SERVER['REQUEST_URI']使用要将用户重定向到的URL 替换.
旁注:您应该确保在发送标头之前调用此代码,因为在发送标头后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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4599 次 |
| 最近记录: |