12

有没有什么方法可以让我只给他们的 wp user_ID 登录一个 Wordpress 用户?

我正在向用户发送电子邮件以确认某些内容,当他们单击给定的链接以访问该网站时,他们需要登录才能看到我将他们带到的页面,因此我必须让用户登录然后执行标头重定向。

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

4

4 回答 4

43

这里有一个自动记录用户的功能(未测试):

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);
    }
}
于 2012-04-06T09:38:43.193 回答
7

您必须在 wp_login 挂钩中传递 2 个参数。参见Wp 法典

wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user->user_login, $user );
于 2015-12-31T13:49:50.497 回答
2

创建单独的表来存储您发送的所有链接和相应的临时身份验证代码,这可能仅在一段时间内有效,然后将该临时身份验证代码和电子邮件作为 url 参数传递 -

编写代码以根据临时身份验证代码验证用户,以便用户点击电子邮件后,您就可以重定向他。

于 2012-04-06T09:41:08.100 回答
-1

这真是个糟糕的主意。考虑一下:您向用户 A 和 B 发送一封电子邮件,其中包含以下链接:

http://wordpressblog.exp/fromemail?user_id=A;
http://wordpressblog.exp/fromemail?user_id=B;

如果用户 B 用 A 的 user_id 替换他的用户 ID,那么他可以访问用户 A 的帐户。你最好构建一个哈希来记录用户

于 2012-04-06T09:33:35.130 回答