仅使用用户ID的Wordpress登录用户-无法记住登录问题

时间:2019-05-09 16:26:43

标签: wordpress

我试图仅通过用户ID登录测试站点上的wordpress用户。

我的目标是发送一封电子邮件,提醒他们查看他们最近购买的产品,并希望通过电子邮件链接自动登录并带到审阅表单。

然后,当提交评论时,它会被标记为“经过验证的买家”

我制作了这个用户类和登录测试脚本,以查看是否可以按照我找到的其他文档来工作...

class UserAPI {
private $_id = 0;
private $_wpUser;

public function __construct(int $userID) {
    $this->_id = $userID;
    $this->_wpUser = get_user_by('id', $this->_id);
}


/*
 *  Log the user in
 */
public function login() {
    wp_clear_auth_cookie();

    wp_set_current_user( $this->_id, $this->_wpUser->user_login );
    wp_set_auth_cookie( $this->_id, true );
    do_action( 'wp_login', $this->_wpUser->user_login, $this->_wpUser );

    $currentUser = wp_get_current_user();

    if ( is_user_logged_in() ){
        echo 'logged in: ' . $currentUser->user_login;
    }

    else { echo 'not logged in'; }
}
}   


// Login test 
require('../../includes/userAPI.php');
require('../../../../../wp-load.php');

$userID = 1118; // random user in DB
$userAPI = new \mynamespace\UserAPI($userID);

// Log in user
$userAPI->login();

login()的输出显示当前用户是我从现有数据库中选择作为测试的人。

但是,如果在执行此操作后加载了wordpress网站,则该用户尚未登录。

我什至证实了这一点...

add_action('init', function() {
$currentUser = wp_get_current_user();

    if ( is_user_logged_in() ){
        echo 'logged in: ' . $currentUser->user_login;
    }

    else { echo 'not logged in'; }

});

加载网站时,测试代码显示“未登录”

因此,我在一个浏览器中打开了按ID登录测试脚本,在另一个选项卡中打开了wordpress主页。

如何解决此问题,以便在我运行登录脚本时,转到wordpress主页选项卡并刷新它-记住登录名,并且该站点加载有登录用户?

谢谢

1 个答案:

答案 0 :(得分:0)

问题是在本地使用xampp时出现网址不匹配

有时浏览器或xampp会将我的显式调用更改为

http://127.0.0.1/devsite/

到...

http://localhost/devsite/

我想那是在破坏登录Cookie。