Отправка ссылки для сброса пароля пользователю из пользовательской формы восстановления пароля
Я безуспешно пытаюсь найти решение, просматривая множество руководств. У меня есть пользовательская страница входа, и я просто заменяю форму входа на форму восстановления пароля по клику. Моя проблема в том, как сделать так, чтобы форма отправляла пользователю ссылку для сброса пароля, если введено правильное имя пользователя или 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>

В вашем плагине сначала нужно установить 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' );

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

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