WordPress以两种方式处理登录失败:
如果凭证不正确,并且用户名和密码都有值,则wp\\u login\\u failed可以捕获此操作
如果两个或其中一个选项都为空,则WordPress将生成错误对象作为身份验证过滤器中的第一个参数;它不会打开,wp\\u login\\u failed action捕获了我们在此处所做工作的原因/事件,
参见代码中的注释:
add_filter( \'authenticate\', function( $user, $username, $password ) {
// forcefully capture login failed to forcefully open wp_login_failed action,
// so that this event can be captured
if ( empty( $username ) || empty( $password ) ) {
do_action( \'wp_login_failed\', $user );
}
return $user;
} );
// to handle even you can handle the error like
add_action( \'wp_login_failed\', function( $username ) {
if ( is_wp_error( $username ) ) {
// you return 401 with wp function, this action takes place before header sent.
$wp_query->set_401();
status_header( 401 );
nocache_headers();
}
} );
我的答案是:
Redirect user using the 'wp_login_failed' action hook if the error is 'empty_username' or 'empty_password' 和
How to force a 404 on WordPressupdate: 我写了一个超级简单的插件来实现这一点WP-401-On-Failed-Login. 它使用一些wp auth挂钩,并在发送内容之前设置\\u header()。