在插件中,在处理条带结帐付款后,创建一个帐户,用户登录,然后重定向到“感谢页面”。
在这个页面上,只有大约1/3到1/2的用户仍在登录,尽管我确认他们在重定向之前登录了上一个页面。我查看了那些没有一直登录但找不到模式的用户的用户代理(这发生在Edge、Chrome、Firefox和Safari上)。
Paypal也可以采用同样的流程。
Paypal流程是:用户在Paypal上付款,通过GET请求重定向到我们的网站,通过Paypal验证付款,然后创建WP帐户,用户登录并重定向。
条带过程是:用户使用条带结账在我们的网站上付款。条带令牌使用POST请求提交到此同一页面,然后对其进行处理,然后创建WP帐户,登录用户并重定向。
在Stripe和Paypal功能中,用户登录并重定向如下:
wp_set_current_user( $user_id );
wp_set_auth_cookie( $user_id, true );
// here I have confirmed that each time, they are logged in
// headers_sent() always returns false, if that\'s relevant
wp_safe_redirect( $url );
exit;
但只有贝宝用户总是登录到下一页。条带用户不是。登录不“粘滞”的原因是什么?
UPDATE: 在“感谢页面”上,我记录用户的cookie,即使wp\\u get\\u current\\u user()返回0,wordpress\\u logged\\u in\\u[哈希]cookie也在那里。为什么/如何发生这种情况?
UPDATE 2: 我使用了majick的建议和this thread 使用以下代码登录用户。然而,这没有什么区别。仍有一定比例的用户未登录下一页。
clean_user_cache( $user_id );
wp_clear_auth_cookie();
wp_set_current_user( $user_id );
wp_set_auth_cookie( $user_id , true );
$user = new WP_User($user_id);
update_user_caches($user);