会员区登录失败消息

时间:2016-05-05 作者:Dan Loffler

我有一页here.

当前,如果成员输入了错误的凭据或根本没有凭据,他们将被重定向到WordPress登录屏幕。

我希望在同一页上显示一条消息。。。“您的登录尝试未成功。请重试。”。。。表格上方或下方。

我不知道从哪里开始。

1 个回复
最合适的回答,由SO网友:N00b 整理而成

您必须考虑两种情况,因为它们的行为几乎没有什么不同。将这两个代码块复制到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]
我建议在下一次向社区询问之前,自己做一些调查并尝试一些东西。