我正在尝试创建订阅者自动登录的功能,并附加到网站URL上。我使用ACF将密钥文本添加到用户详细信息页面,密钥存储在_usermeta表中。我可以自动登录。但是,当我访问登录页面之外的页面时,基于$ current_user对象的回显,登录名似乎更改为我的登录名。WP使用查询字符串键自动登录
为了测试,我使用了一个注销的Safari浏览器(我从不使用)。在查询字符串中使用具有特殊键的URL登录用户,并在我回显这些值时显示正确的用户名和ID。
查询字符串看起来像:
http://website.com/?k=ABCD1234
这里是我的代码:
function auto_login() {
\t $user_key = $_GET['k'];
\t global $wpdb;
\t $user_id = $wpdb->get_var(" SELECT user_id FROM wp_usermeta WHERE meta_value = '".$user_key."' ");
\t wp_set_current_user($user_id);
\t wp_set_auth_cookie($user_id);
\t global $current_user;
\t $user = "";
\t get_currentuserinfo();
\t $user = $current_user->user_login;
\t //echo $user;
}
add_action('init', 'auto_login');
感觉就像cookie不会被置位(数据/状态没有跨页面维护)。有什么想法发生在这里?谢谢!
查看pluggable.php时,似乎可能与$ current_user发生冲突,因为wp_set_current_user也会使用它。但是,当我将全局$ current_user行删除到// echo $ user行时,我仍然得到相同的行为:我可以使用包含查询字符串k = value的URL回显正确的用户标识,但单击第二页开关即使我没有登录,我也删除了与此域名相关的所有Cookie。 – FredHead