您必须考虑两种情况,因为它们的行为几乎没有什么不同。将这两个代码块复制到functions.php 文件下面是有关错误的代码,请确保阅读注释。
<小时>
1. Login failed - username and password was provided but something was incorrect
add_action( \'wp_login_failed\', \'login_failed_wrong_data\' );
function login_failed_wrong_data( $user ) {
// Get the URL user came from, a.k.a that same login page
$referrer = $_SERVER[\'HTTP_REFERER\'];
// Check that we\'re not on the default login page + other things
if( ! empty( $referrer ) && ! strstr( $referrer,\'wp-login\' ) && !strstr( $referrer,\'wp-admin\' ) && $user != null ) {
// Check if we don\'t already have a failed login attempt
if( ! strstr( $referrer, \'?login=failed\' ) ) {
// Redirect to same login page and append a query string
wp_redirect( $referrer . \'?login=failed\' );
}
else {
// Redirect to same login page
wp_redirect( $referrer );
}
}
exit;
}
<小时>
2. Login failed - username and/or password was not provided at all
add_action( \'authenticate\', \'login_failed_no_data\' );
function login_failed_no_data( $user ) {
// Get the URL user came from, a.k.a that same login page
$referrer = $_SERVER[\'HTTP_REFERER\'];
$error = false;
// Check if inputs are empty - these have to match with your input "name" attributes
if( $_POST[\'log\'] == \'\' || $_POST[\'pwd\'] == \'\') {
$error = true;
}
// Check that we\'re not on the default login page + other things
if( ! empty( $referrer ) && ! strstr( $referrer,\'wp-login\' ) && ! strstr( $referrer, \'wp-admin\' ) && $error ) {
// Make sure we don\'t already have a failed login attempt
if( ! strstr( $referrer, \'?login=failed\' ) ) {
// Redirect to same login page and append a query string
wp_redirect( $referrer . \'?login=failed\' );
}
else {
// Redirect to same login page
wp_redirect( $referrer );
}
exit;
}
}
<小时>
Updated error message as shortcode:
// Add this to functions.php
add_shortcode( \'loginerror\', \'myErrorShortcode\' );
function myErrorShortcode() {
if( isset( $_GET[\'login\'] ) && $_GET[\'login\'] == \'failed\' ) {
// Start "recording"
ob_start(); ?>
<div id="login-error">
<p>Your login attempt was not successful. Please try again.</p>
</div> <?php
// Return result
return ob_get_clean();
}
}
//How to use
[loginerror]
我建议在下一次向社区询问之前,自己做一些调查并尝试一些东西。