web-dev-qa-db-ja.com

最初に既存の手順ページにリダイレクトすることにより、「パスワードを失った」アクションを傍受します

ログインしようとしているときに、ユーザー(子供)が自分のパスワードを忘れずに、ちょっとしたミスを犯し続ける状況があります。
質問ごとに、最初にページにリダイレクトされます。次のような指示を含むid = 5

戻ってください:
あなたのクッキーを有効にしてください
正しい言語がキーボードにあるか確認してください
あなたの母親にログインしてもらいます
等...
上記のいずれでもうまくいかない場合は、ここをクリックしてください( http://oursite.com/wp-login.php?action=lostpassword 新しいパスワードを要求する

そのため、ログインページのlostpasswordリンクは、カスタムメッセージ/指示を使用して既存のページにリダイレクトし、次に実際のlostpasswordリンクにページ上のリンクをリダイレクトする必要があります。

シモンズ:私は最近導入された lostpassword_post フックが役に立つかもしれないと思います。

1
marikamitsos

これは簡単です。

  1. Lostpasswordページを検出するためにinitをフックします

  2. ユーザーがあなたの説明ページ(追加のクエリパラメータを追加することによって定義した)から来ていない場合、彼はあなたのカスタムページにリダイレクトされます。

  3. カスタムページで、リダイレクトをスキップするように設定した追加のパラメータを含め、パスワードを紛失したページへのリンクを追加します。

    add_action( 'init', 'lostpassword_instructions' );
    
    function lostpassword_instructions() {
    
    
        global $pagenow;
    
        if ( $pagenow == 'wp-login.php' && 
            isset( $_REQUEST[ 'action' ] ) && 
            $_REQUEST[ 'action' ] == 'lostpassword' && 
            ! isset( $_REQUEST[ 'skip' ] )
        ) {
    
            exit( wp_redirect( 'http://domain.com/lost-password-instructions' ) );
    
        }
    
    }
    

今あなたのカスタムページで、そのような何かがうまくいくはずです:

$url = 'http://domain.com/wp-login.php?action=lostpassword&skip=true';
1
Ahmed Fouad

パスワードの紛失ページの前にアクションlogin_form_lostpasswordが呼び出されます。これを試して :

add_action("login_form_lostpassword", function () {

    echo "on the lostpassword page";
    exit();

});

echoの代わりに、あなたの説明ページにリダイレクトしてください。

0
mmm