WordPress 用户自动登录的方法

江河/ 2023年07月12日/ WordPress/ 浏览 2807

开发的 WordPress 主题或 WordPress 小程序,如果有微信登录,QQ登录等功能,正常输入账户密码登录的方式显示是不能用了。


用户信息验证通过后,如何把用户设置为登录状态呢?


方法一、使用函数 wp_signon


可以参考一下之前的文章《WordPress函数:wp_signon 登录 WordPress 站点 》


将以下代码应用到你的 WordPress 中即可实现自动登录功能:


if (!is_user_logged_in()) {
	$creds = array();
	$creds['user_login'] = 'example'; // 用户名是 example,自行修改
	$creds['user_password'] = '123456'; // 密码是 123456
	$creds['remember'] = true;
	$user = wp_signon( $creds );
	if ( is_wp_error($user) )
		echo $user->get_error_message();
}


方法二、无需账号密码的方法

 

使用微信扫码登录的话,就需要这种方式了。


通过上面的介绍我们可以看出 wp_signon()函数是需要知道用户的用户名及密码的;而现在有种更好的实现方法,不需要知道帐号密码,只需指定用户名即可,实现代码如下:


if (!is_user_logged_in()) {
	$user_login = 'example'; // 用户名是 example,自行修改

	// 获取用户 id
	$user = get_userdatabylogin($user_login);
	$user_id = $user->ID;

	// 登录
	wp_set_current_user($user_id, $user_login);
	wp_set_auth_cookie($user_id,true);
	do_action('wp_login', $user_login);
}


在这里用到了这个函数:wp_set_auth_cookie(),这个函数的用法跟 wp_signon()函数类似:wp_set_auth_cookie( $user_id, $remember, $secure ),第一个参数是用户 ID,第二个是是否记住用户,第三个是是否启用安全 cookie~


建议不要设置启用安全 cookie ,不太清楚这个参数的原理…… 启用之后总是各种问题……


发表评论

暂无评论,抢个沙发...

客服 工单