web-dev-qa-db-ja.com

パスワードリセット後のwordpressリダイレクト

パスワードを再設定した後にget_bloginfo('url');にリダイレクトできるようにしたいです。

しかし、私はこれを行うための簡単な答えや機能を見つけることができません。

これが可能かどうか誰かが知っていますか?

ジョシュありがとう

7
Joshc

これが簡単な解決策です。 login_headerurlにフックしています。たぶんこれのためのよりよいフックがある、しかしそれはうまくいく、あなたのfunctions.phpの中にこれを入れる:

function wpse_lost_password_redirect() {

    // Check if have submitted 
    $confirm = ( isset($_GET['checkemail'] ) ? $_GET['checkemail'] : '' );

    if( $confirm ) {
        wp_redirect( home_url() ); 
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

それは何をする、それはlogin_headerurl上で実行され、あなたが有効なユーザ名または電子メールを送信した後に得られるGETパラメータ "checkedmail"をチェックする。それから私はawsome関数 wp_redirect を使用して home_url にリダイレクトします。

コメントの後に更新

新しいパスワードを送信した後にユーザーをリダイレクトしたい場合は、フック password_reset を使用するだけです。ここに例があります。

function wpse_lost_password_redirect() {
    wp_redirect( home_url() ); 
    exit;
}
add_action('after_password_reset', 'wpse_lost_password_redirect');
7

アクション 'password_reset'が before のパスワードがリセットされるため、ここでは「正しい」答えは機能しません。

更新前の最初の回答を修正しました。

function wpse_lost_password_redirect() {

    // Check if have submitted
    $confirm = ( isset($_GET['action'] ) && $_GET['action'] == resetpass );

    if( $confirm ) {
        wp_redirect( home_url() );
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

編集:コメントするのに十分な担当者がいなかったので、私はこれを新しい回答として投稿しています。

9
r00tAcc3ss

「コメントの後に更新」という回答がどのように機能するのかわかりません。

'password_reset'フックのドキュメントには、「ユーザーのパスワードがリセットされる前に発生します」と書かれています。
リダイレクトした場合、パスワードを終了しても変更されません。

私は同様の必要性があったので、私は問題に対する私の解決策を開発しました。まだ "password_reset"フックに応答しますが、ただちにリダイレクトを実行する代わりに "login_url"フィルタ用のフックを追加します。そして、このフィルタでは、ユーザーがログインした後にリダイレクトをホームページに追加します。

 add_action( "password_reset", "rngs_password_reset", 10, 2 );

/**
 * Implement "password_reset" for RNGS
 *
 * After a password reset has been performed we want the Log in link to redirect the user to the home url.
 * When we see this action being run we know that we should be filtering "login_url" to add the redirect the home page.
 * We don't filter "login_url" any other time. 
 *
 * @param WP_User $user - the user object
 * @param string $new_pass - the new password
 *  
 */
function rngs_password_reset( $user, $new_pass ) {
  add_filter( "login_url", "rngs_login_url", 10, 2 );
}

/**
 *  Implement "login_url" filter for RNGS
 *
 * Redirect the user to the home page after logging in
 *
 * @TODO - make this an option field that controls where the logged in user goes
 * @TODO - dependent upon role?
 * 
 * @param string $login_url - the original login_url which is not expected to include "redirect_to" or "reauth"
 * @param string $redirect - expected to be null/blank
 */
function rngs_login_url( $login_url, $redirect ) {
  $home_redirect = home_url();
  $login_url = add_query_arg('redirect_to', urlencode( $home_redirect ), $login_url);
  return( $login_url );
} 
2
bobbingwide

質問に何か足りないかもしれませんが、lostpassword_redirectフィルタの使用に問題があるのでしょうか。

add_filter( 'lostpassword_redirect', 'my_redirect_home' );

function my_redirect_home( $lostpassword_redirect ) {
    return home_url();
}

もっとここに: https://codex.wordpress.org/Plugin_API/Filter_Reference/lostpassword_redirect

0
rsigg