перенаправление wordpress после сброса пароля


Я хотел бы иметь возможность перенаправлять на get_bloginfo('url'); после сброса пароля.

Но я ни за что на свете не могу найти никакого простого ответа или функции для этого.

Кто-нибудь знает, возможно ли это?

Спасибо Джош

Author: Joshc, 2013-01-24

5 answers

Вот простое решение. Я подключаюсь к 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');
 9
Author: Pontus Abrahamsson, 2017-04-20 06:07:50

"Правильный" ответ здесь не работает, потому что действие "password_reset" срабатывает перед сбросом пароля.

Я изменил первый ответ перед обновлением, чтобы он работал.

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');

Редактировать: Не хватило репутации, чтобы прокомментировать, поэтому я публикую это как новый ответ.

 11
Author: r00tAcc3ss, 2014-11-04 15:50:55

Я не вижу, как работает ответ "ОБНОВИТЬ после комментария".

В документации для крючка "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
Author: bobbingwide, 2014-08-07 16:15:43

Возможно, я что-то упускаю в вопросе, но что-то не так с использованием фильтра 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

 1
Author: rsigg, 2017-02-06 22:35:48

Перенаправление на - это функция wordpress, для которой вам не нужно создавать плагин, просто добавьте &redirect_to= URL-адрес, и он будет работать. Пример:

echo '<a href="'home_url().'/wp-login.php?action=lostpassword&amp;redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Forgot Password">'Forgot Password'</a>';
 -1
Author: Michael Rogers, 2015-08-15 18:13:24