Отправка ссылки для сброса пароля пользователю из пользовательской формы восстановления пароля

5 сент. 2012 г., 00:02:39
Просмотры: 24.8K
Голосов: 2

Я безуспешно пытаюсь найти решение, просматривая множество руководств. У меня есть пользовательская страница входа, и я просто заменяю форму входа на форму восстановления пароля по клику. Моя проблема в том, как сделать так, чтобы форма отправляла пользователю ссылку для сброса пароля, если введено правильное имя пользователя или email, и возвращала ошибку, если данные неверны. Я пытаюсь сделать это через плагин, который создаю для обработки входа. Вот моя простая форма. Как заставить это работать?

  <form id="wp_pass_reset" action="" method="post">
    <input type="text" id="email-field" name="user_input" value="Имя пользователя или Email" /><br />
    <input type="submit" id="submitbtn" name="submit" value="Сбросить" />
  </form>
7
Комментарии

Так любой может сбросить чужой пароль?

Stephen Harris Stephen Harris
5 сент. 2012 г. 02:49:10

Лол, блин, сейчас исправлю

Pollux Khafra Pollux Khafra
5 сент. 2012 г. 03:04:53

Вот подходящая статья для вас. - http://www.kvcodes.com/2016/10/wordpress-custom-forgot-password-page/

Kvvaradha Kvvaradha
3 нояб. 2016 г. 06:32:01

Я использую тему Olympus на WordPress. URL для восстановления пароля перенаправляет на URL главной страницы. Вот код, который используется в разделе сброса пароля: php <?php $lostpswd = apply_filters( 'yz_lostpassword_url', wp_lostpassword_url() ); ?> <a href="<?php echo esc_url( $lostpswd ); ?>" class="forgot"> <?php esc_html_e( 'Забыли пароль?', 'crum-ext-sign-form' ); ?> </a> Что мне делать?

zahra zahra
27 окт. 2020 г. 14:46:23

Сначала нужно определить, возвращает ли wp_lostpassword_url() неправильный URL, или же фильтр yz_lostpassword_url возвращает неправильный URL. Например, просто установите $lostpswd = wp_lostpassword_url(); и посмотрите, что произойдет?

Rup Rup
27 окт. 2020 г. 15:13:22

Однако вы разместили это как ответ на существующий вопрос, хотя это новый вопрос. Если вам нужна дополнительная помощь, не могли бы вы задать это как новый вопрос? Можете сослаться на этот вопрос, если он полезен для контекста. Спасибо!

Rup Rup
27 окт. 2020 г. 15:14:22

@zahra вам следует задавать новые вопросы как новые вопросы, не публикуйте их в качестве решений к другим вопросам

Tom J Nowell Tom J Nowell
27 окт. 2020 г. 16:04:32
Показать остальные 2 комментариев
Все ответы на вопрос 1
3

В вашем плагине сначала нужно установить URL для перенаправления либо пустым: $redirect='';, либо указать полный URL страницы, на которую пользователь должен попасть после успешной смены пароля. Например, для http://example.com/mypage/ следует использовать: $redirect=site_url( '/mypage/ ' );

Тогда ваша форма будет выглядеть так:

<form name="lostpasswordform" id="lostpasswordform" action="<?php echo wp_lostpassword_url(); ?>" method="post">
    <p>
        <label>Имя пользователя или E-mail:<br>
        <input type="text" name="user_login" id="user_login" class="input" value="" size="20" tabindex="10"></label>
    </p>
    <input type="hidden" name="redirect_to" value="<?php echo $redirect ?>">
    <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="Получить новый пароль" tabindex="100"></p>
</form>

Примечание: Этот код не тестировался. Сообщите в комментариях, если что-то не работает.

Обновление

Как отмечено в комментариях, если у вас есть фильтр для login_url, функция wp_lostpassword_url() будет указывать на вашу кастомную страницу. Чтобы временно восстановить стандартный login_url, удалите фильтр прямо перед кодом формы:

remove_filter( 'login_url', 'your_filter_function' );

и добавьте его обратно сразу после кода формы:

add_filter( 'login_url', 'your_filter_function' );
7 сент. 2012 г. 00:58:27
Комментарии

Отправляется ли ссылка с уникальным ключом на введенный email, если это действительный email пользователя? Я пытаюсь воспроизвести стандартный метод WordPress, только чтобы отправляемая ссылка вела на мой шаблон сброса пароля, а не на стандартный WordPress.

Pollux Khafra Pollux Khafra
7 сент. 2012 г. 01:12:46

Вы добавили фильтр для login_url, чтобы он указывал на ваш шаблон сброса? Если да, то вам нужно сохранить оригинальное значение login_url в вашем фильтре, чтобы использовать его вместо вызова wp_lostpassword_url().

marfarma marfarma
7 сент. 2012 г. 01:16:29

Или альтернативно - удалить ваш фильтр перед кодом формы и восстановить его после. Возможно, так будет проще.

marfarma marfarma
7 сент. 2012 г. 01:18:29