有没有办法只给他们的wp user_ID登录Wordpress用户?
我正在向用户发送电子邮件以确认某些内容,当他们点击指定的链接进入网站时,他们需要登录才能看到我带他们去的网页,所以我必须将用户登录然后执行标题重定向。
我需要一个由wordpress提供的php函数,我可以在php中使用它,你能否给我任何关于我如何实现它的额外细节(如果有的话)
答案 0 :(得分:37)
这是一个自动登录用户(未测试)的功能:
function auto_login() {
if (!is_user_logged_in()) {
//determine WordPress user account to impersonate
$user_login = 'guest';
//get user's ID
$user = get_userdatabylogin($user_login);
$user_id = $user->ID;
//login
wp_set_current_user($user_id, $user_login);
wp_set_auth_cookie($user_id);
do_action('wp_login', $user_login);
}
}
答案 1 :(得分:4)
你必须在wp_login钩子中传递2个参数。见Wp codex
wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user->user_login, $user );
答案 2 :(得分:2)
创建单独的表来存储您发送的所有链接和相应的临时身份验证代码,这些代码可能只有一段时间有效,然后将该临时身份验证代码和电子邮件作为URL参数传递 -
编写代码以根据临时身份验证代码验证用户,以便用户点击电子邮件后您可以重定向他。
答案 3 :(得分:-1)
这是一个非常糟糕的想法。考虑一下: 您向用户A和B发送电子邮件,其中包含以下链接:
http://wordpressblog.exp/fromemail?user_id=A;
http://wordpressblog.exp/fromemail?user_id=B;
如果用户B用A的user_id替换他的用户ID,则他可以访问用户A的帐户。 你最好构建一个用于记录用户的哈希