web-dev-qa-db-ja.com

カスタムパスワード取得ページにリダイレクトする方法

私は新しいサイトを持っていて、それと一緒にbbpress beta-3を使っています。bbpressで提供されているカスタムテンプレートを使ってカスタムログイン/登録/パスワード紛失ページを作成しました。 wp-login.phpへの呼び出しを「ハイジャック」するアクション。私の最大の問題はlost-passwordページにあります。通知を出してリダイレクトしたいのですが、エラーをキャッチすることはできますがsent passwordイベントをキャッチすることはできません。

私は今function.phpで使用しています:

function get_password_retrieve_errors(){
    wp_redirect( site_url('lost-password').'?getpass=failed'  );
}

add_filter('lostpassword_redirect', 'get_password_retrieve_errors', 1);

そしてform-user-lost-pass.phpでは:

<?php if ( $_GET['getpass'] == 'failed' ) { ?>
    <div class="bbp-template-notice error">
        <p>Invalid username or e-mail, please try again.</p>
    </div>
<?php } ?>
  1. それをする方法はありますか?
  2. 参照できるグローバルな$ errorオブジェクトはありますか?
  3. 参照できるグローバルな$ notificationsオブジェクトはありますか?

ありがとうございます。

4
Amit

私は本当にあなたのどちらかをフォローしているのかわからないけど、wp_lostpassword_urlをフィルタリングするのはどうでしょう?

からwp-includes/general-template.php

function wp_lostpassword_url( $redirect = '' ) {
            $args = array( 'action' => 'lostpassword' );
            if ( !empty($redirect) ) {
                    $args['redirect_to'] = $redirect;
            }

            $lostpassword_url = add_query_arg( $args, network_site_url('wp-login.php', 'login') );
            return apply_filters( 'lostpassword_url', $lostpassword_url, $redirect );
}

それはあなたのカスタムURLをそれを指すためにあなたが使うことができるフィルタを持っているように見えます、そしてあなたの 'getpass'クエリ変数さえも追加します

これは非常に基本的な例です。

function custom_login_lostpassword_url()
{
    // use a site_url/plugins_url to output the correct URL.
    return "http://.../my-custom-lostpassword-screen.php";
}

add_filter("lostpassword_url", "custom_login_lostpassword_url");
3
helgatheviking