我上次在网站上这么做已经很久了,但这是要点。
你想加入wp_authenticate_user 它将在WP尝试对用户进行身份验证后但在用户登录之前激发。
您将收到WP_User 对象或aWP_Error 对象,您应该返回WP_User 对象(如果您自己的身份验证检查成功)或WP_Error 对象(如果身份验证失败)。像这样的方法应该会奏效:
function wpse_232915_authenticate_user( $user ) {
/* already failed login attempt
return existing error or you\'ll subvert the login process:
*/
if ( is_wp_error( $user ) ) {
return $user;
}
$failure = your_own_authentication_tests( $user->ID ); // test if the user should be allowed in by your own rules
if ( $failure ) {
return new WP_Error( \'wpse_232915_user_expired\', \'Sorry, you have expired!\' );
}
return $user;
}
add_filter( \'wp_authenticate_user\', \'wpse_232915_authenticate_user\' );
根据测试的复杂程度,可以从该函数返回WP\\u Error对象,而不是像我在这里假设的那样返回true/false。
我对WP\\u Error还不够熟练,无法知道您是否可以链接错误,或者登录错误通知框是否会对此感到满意,但这是一个值得研究的改进。