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

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

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

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

Благодарность Josh

8
24.01.2013, 16:46
2 ответа

Вот простое решение. Я сцепляюсь в 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 и проверки на ПОЛУЧИТЬ параметр "checkedmail", который Вы получаете после представления допустимого имени пользователя или электронной почты. Затем я перенаправляю при помощи потрясающей функции 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
19.02.2020, 22:02
  • 1
    Привет Понт, большое спасибо за Ваш ответ, это прибудет использование в течение другого времени, я уверен. Но я на самом деле после перенаправления после того, как сам новый passord был сброшен, не после представления электронной почты/пользователя. См. этот снимок экрана формы, что мне нужен он перенаправление, чтобы продолжить работать... i.imgur.com/x2IUQ0c.jpg - Спасибо –  Joshc 26.01.2013, 17:39
  • 2
    Aaah отношений, который я вижу, это на самом деле легче, чем функция прежде. См. мой обновленный ответ. –  Pontus Abrahamsson 26.01.2013, 20:51
  • 3
    Awgh, они являются оба потрясающими!! Спасибо за совместное использование с нами это работало в обработке! Хороший. –  Joshc 27.01.2013, 14:32
  • 4
    Остерегайтесь того использования password_reset действие выполняется, прежде чем фактический сброс пароля сделан. В документации говорится Fires before the user's password is reset. –  Ejaz 11.11.2015, 21:50
  • 5
    Вторая версия не работает правильно, потому что пароль не будет на самом деле изменен. Необходимо удалить exit потому что это действие выполняется, прежде чем пароль изменен. –  Jon Surrell 11.07.2016, 09:50

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

В документации для рычага '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
19.02.2020, 22:02

Теги

Похожие вопросы