如何仅使用user_id将用户登录到Wordpress

时间:2012-04-06 09:27:12

标签: php wordpress wordpress-login

有没有办法只给他们的wp user_ID登录Wordpress用户?

我正在向用户发送电子邮件以确认某些内容,当他们点击指定的链接进入网站时,他们需要登录才能看到我带他们去的网页,所以我必须将用户登录然后执行标题重定向。

我需要一个由wordpress提供的php函数,我可以在php中使用它,你能否给我任何关于我如何实现它的额外细节(如果有的话)

4 个答案:

答案 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的帐户。 你最好构建一个用于记录用户的哈希