要在wp admin区域之外实现自定义用户登录功能,wp_signon() function 就是要走的路。此函数接受一个数组,其中可能包含;记住;输入布尔值,以确定用户在接下来的14天内是否应保持登录状态。
我在自定义登录实现中使用wp\\u signon(),并将记住设置为true,如下所示:
// $args[\'...\'] = ...
$args[\'remember\'] = true;
$user = wp_signon($args, is_ssl());
if(is_wp_error($user)){
// ...
return;
}else{
wp_set_current_user($user->ID);
wp_set_auth_cookie($user->ID);
// ...
}
登录过程本身运行得很好,但一旦我关闭浏览器并再次打开它,就不会出现;记住;在任何地方,用户都显示为未经身份验证。
从开发人员的角度来看,我没有找到任何与此记住会话功能的工作方式相关的文档。
The generated cookies are:


From the docs: (
see docs)
登录时,WordPress使用WordPress\\uu[哈希]cookie存储您的身份验证详细信息。其使用仅限于管理屏幕区域/wp admin/
我不明白这一点。有人能提供更详细的解释吗?最后一部分让我认为,这个记住我的功能是在设计时考虑到了wp管理区域,而不是前面。也许这就是它不起作用的原因。
登录后,WordPress设置WordPress\\u logged\\u in\\uHash[哈希]cookie,它指示您何时登录,以及您是谁,以供大多数用户使用。
这是可以理解的。但我还是很困惑。
我注意到到期日期不包含日期。上面写着:“;会话;。它是否应该包含将来的日期?
So my question would be:
如果记忆键随wp\\u signon()提供,我如何处理自动登录?如果我想在wp admin(wp管理)区域之外使用它,我是否需要手动检查它?或者,由于wp load(wp负载),这应该是现成的。php?
What have I done to try to solve the mystery:
延长cookie生存期:
function long_live_the_auth_cookie($expirein){
return 31556926; // 1 year in seconds
}
add_filter(\'auth_cookie_expiration\', \'long_live_the_auth_cookie\');
在多个浏览器和设备中进行测试,以确保这不是特定于浏览器或设备的问题。
Did I think of my own solution?:
对使用自定义代码实现“记住我”功能,而忽略WP方式,因为WP用户特性似乎只关注后端。但我认为这太极端了,问题是我只是想知道这些饼干到底是怎么回事,以及如何将它们用于我的目的。