将这两块代码添加到functions.php 或者制作一个插件。一切都应该用注释来解释。
您也可以使用jQuery Validate plugin 要通过ajax检查用户名、密码,并在用户禁用JS时备份这两块代码。
这两段代码应涵盖所有可能的失败登录场景:
两个输入均为空,一个输入为空,两个输入均不正确
//Login failed - username and password entered but incorrect
add_action( \'wp_login_failed\', \'damn_login_failed\' );
function damn_login_failed( $user ) {
$referrer = $_SERVER[\'HTTP_REFERER\'];
//Make sure we don\'t already have a failed login attempt to prevent double query string
if ( ! strstr( $referrer, \'?login=failed\' ) ) {
//Redirect to CURRENT page and append a querystring of login failed
wp_redirect( $referrer . \'?login=failed\' );
}
else {
wp_redirect( $referrer );
}
exit;
}
//Login failed - no username and password entered
add_action( \'authenticate\', \'damn_login_blank\' );
function damn_login_blank( $user ) {
if ( isset( $_SERVER[\'HTTP_REFERER\'] ) ) {
$referrer = $_SERVER[\'HTTP_REFERER\'];
}
else {
$referrer = \'\';
}
$error = false;
//Check your username and password inputs - these might be different if you changed them - \'log\' is the name attribute of username and \'pwd\' for password, just change to whatever you have
if( isset( $_POST[\'log\'] ) && $_POST[\'log\'] == \'\' || isset( $_POST[\'pwd\'] ) && $_POST[\'pwd\'] == \'\' ) {
$error = true;
}
//Check that we\'re not on the default login page
if ( ! empty( $referrer ) && ! strstr( $referrer,\'wp-login\' ) && ! strstr( $referrer, \'wp-admin\' ) && $error ) {
//Make sure we don\'t already have a failed login attempt to prevent double query string
if ( ! strstr( $referrer, \'?login=failed\' ) ) {
//Redirect to CURRENT page and append a querystring of login failed
wp_redirect( $referrer . \'?login=failed\' );
}
else {
wp_redirect( $referrer );
}
exit;
}
}