登录时的自定义操作和“记住我”

时间:2018-11-06 作者:fdehanne

每次用户登录网站时,我都会尝试调用一个函数。

我成功地wp_login 用于填写登录表单的用户的挂钩。

然而,我找不到一个当用户返回网站时激活了“记住我”选项的钩子(所以他已经有了一个登录cookie)。

我检查过了wp_validate_auth_cookie() 功能,但每个页面都会触发此功能:Wordpress是否在每个页面上检查“记住我”cookie,然后设置用户登录?

谢谢

4 个回复
SO网友:sandrodz

不使用wp_login 钩使用wp_signon 功能。

https://developer.wordpress.org/reference/functions/wp_signon/

wp_signon( array $credentials = array(), string|bool $secure_cookie = \'\' )
凭据是一个具有“user\\u login”、“user\\u password”和“member”索引的数组。如果未提供凭据,则将假定并使用登录表单(如果已设置)。

SO网友:Maidul

wp_login 钩子传递两个参数:$用户->用户登录(字符串)和$用户(WP_User ). 登录表单上的“记住我”选项没有传递到wp\\u登录挂钩上,它用于wp_signon 函数在浏览器上设置cookie。

wp_set_auth_cookie($user->ID, $credentials[\'remember\'], $secure_cookie);
所以您不能使用wp\\u登录挂钩访问它。

SO网友:Ynhockey

您想做什么还不是百分之百清楚,但为了获得“记住我”状态,您可以执行以下操作:

呼叫wp_set_auth_cookie( $user_id, $remember ), 哪里$remember 是“记住我”状态add_filter( \'auth_cookie_expiration\', \'get_expiration\' ), 10, 3 ); 使用:

function get_expiration( $expiration, $user_id, $remember ) {
    // $remember will be passed from wp_set_auth_cookie()
    if ( $remember ) {
        // ...
    } else {
        // ...
    }
}

SO网友:Akhil

我知道这是一个老问题,但据我所知,OP需要在用户每次登录时调用一个自定义函数(无论是通过登录表单还是在之前登录时选中记住我选项后自动登录)
这可以通过使用“身份验证”过滤器来实现。更多信息可以在我找到的这本有用的指南中找到。

https://usersinsights.com/wordpress-user-login-hooks/

结束

相关推荐

Error When Trying To Login

自从将服务器更新为PHP 7以来,我在尝试登录到后端时出现了一个错误。前端工作正常,但我无法登录到后端。以下是错误消息:Fatal error: Uncaught Error: Using $this when not in object context in /www/wp-content/plugins/MyFontsWebfontsKit/mf-options.inc:28 Stack trace: #0 /www/wp-includes/class-wp-hook.php(28