0

ログインに失敗した後、次の関数を使用してユーザーをリダイレクトしています。Functions.phpに、次を追加しました。

add_action( 'wp_login_failed', 'inline_login_fail' );

function inline_login_fail( $username ) {
    $referrer = $_SERVER['HTTP_REFERER'];
    if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
        if ( !strstr($referrer,'?login=failed') ) { // don’t append twice
        wp_redirect( $referrer . '?login=failed' ); 
        } else {
        wp_redirect( $referrer );
        }
    exit;
    }
}

これは機能しますが、問題は「?login-failed」を解析する方法がわからないことです。これをPHPの質問として尋ねたところ、URLが不正であると言われました。

私のURL:www.site.com/?page_id=57?login=failed

優先URL:www.site.com/?page_id=57&login=failed

今、あなたは私が「?」を変えることができると思うでしょう。に '&'。これを行うと、ユーザーがホームページからログインしようとして失敗した場合に問題が発生します。404であるURLを作成します:「要求されたURL / wordpress /&login=failedはこのサーバーで見つかりませんでした。」

この関数を修正して、優先URLで機能するようにする方法はありますか?これで、次のように、ログインが失敗したかどうかの値を取得できます。

<?php
if(isset($_GET['login']) === true and $_GET['login'] === 'failed')
{
  get_template_part( 'login', 'failed' );
} else {
  get_template_part( 'login', 'form' );
}
?>

そうしないと、そのURLを操作する方法がまったくわかりません。ありがとう!

4

1 に答える 1

1

確認してください?

<?php
    function inline_login_fail( $username ) {
        $referrer = $_SERVER['HTTP_REFERER'];
        if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
            if ( !strstr($referrer,'login=failed') ) { // don’t append twice
                if(!strstr($referrer, '?')){
                    wp_redirect( $referrer . '?login=failed' ); 
                } else {
                    wp_redirect( $referrer . '&login=failed' ); 
                }
            } else {
                wp_redirect( $referrer );
            }
        exit;
        }
    }
?>
于 2012-08-17T07:07:05.937 に答える