«Сбросить мой пароль» ссылки на себя (обновление страницы)

Я использую WooCommerce.

Когда пользователи переходят на страницу с потерянным паролем, введите адрес электронной почты и нажмите «Сбросить пароль», страница просто перезагрузится. Я не уверен, что делает WordPress нормально, но я бы ожидал, что он покажет, что «электронная почта была отправлена ​​…» или текст.

Сама почта отправляется просто отлично.

Что может быть неправильным?

Аналогично, когда пользователь создает новый пароль (следуя ссылке электронной почты) и нажимая на «сохранить пароль», на следующей странице снова появляется страница с потерянным паролем! Это немного запутанно.

Я просто нашел другое решение моей проблемы. Проблема заключалась в том, что сообщения просто не отображаются должным образом. Добавив этот код в свой собственный CSS (в разделе «Внешний вид»), сообщения теперь отображаются снова:

.page-id-1154 .woocommerce-message, .page-id-10 .woocommerce-message { display: block !important; } 

Это решение, с которым я столкнулся: мы можем переопределить файл шаблона WooCommerce и изменить его. Мне не нравятся переопределяющие файлы шаблонов, потому что в будущем шаблон WooCommerce может измениться, и мы должны скопировать его снова и применить изменения к шаблону переопределения в любом случае, но я не мог найти более простой способ сделать это.

Из каталога шаблонов плагинов WooCommerce скопируйте шаблоны / myaccount / form-lost-password.php в woocommerce / myaccount / в ваш (тематический) каталог тем. (Это способ переопределить стандартные файлы шаблонов WC)

Примените следующие изменения (то есть: добавьте строки, заканчивающиеся на «// добавлен Szabesz?>» В копию файла шаблона):

 <?php wc_print_notices(); ?> <?php $on_result_page = isset($_POST['wc_reset_password']) && $_POST['wc_reset_password'] == "true"; //added by Szabesz ?> <?php $on_reset_true_page = isset($_GET['reset']) && $_GET['reset'] == "true"; //added by Szabesz ?> <form method="post" class="lost_reset_password"> <?php if( 'lost_password' == $args['form'] ) : ?> <?php if( !$on_result_page && !$on_reset_true_page ) : //added by Szabesz ?> <p><?php echo apply_filters( 'woocommerce_lost_password_message', __( 'Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.', 'woocommerce' ) ); ?></p> <p class="form-row form-row-first"><label for="user_login"><?php _e( 'Username or email', 'woocommerce' ); ?></label> <input class="input-text" type="text" name="user_login" id="user_login" /></p> <?php else : //added by Szabesz ?> <?php if ( !$on_reset_true_page ) : //added by Szabesz ?> If you want to use the form again, <a href="<?php echo esc_attr(wc_get_endpoint_url( 'lost-password', '', wc_get_page_permalink('myaccount') ) ); ?>">please click here.</a><?php //added by Szabesz ?> <?php endif; //added by Szabesz ?> <?php endif; //added by Szabesz ?> <?php else : ?> <p><?php echo apply_filters( 'woocommerce_reset_password_message', __( 'Enter a new password below.', 'woocommerce') ); ?></p> <p class="form-row form-row-first"> <label for="password_1"><?php _e( 'New password', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="password" class="input-text" name="password_1" id="password_1" /> </p> <p class="form-row form-row-last"> <label for="password_2"><?php _e( 'Re-enter new password', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="password" class="input-text" name="password_2" id="password_2" /> </p> <input type="hidden" name="reset_key" value="<?php echo isset( $args['key'] ) ? $args['key'] : ''; ?>" /> <input type="hidden" name="reset_login" value="<?php echo isset( $args['login'] ) ? $args['login'] : ''; ?>" /> <?php endif; ?> <div class="clear"></div> <?php do_action( 'woocommerce_lostpassword_form' ); ?> <?php if( $args['form'] == 'lost_password' && !$on_result_page && !$on_reset_true_page || $args['form'] == "reset_password" ) : //added by Szabesz ?> <p class="form-row"> <input type="hidden" name="wc_reset_password" value="true" /> <input type="submit" class="button" value="<?php echo 'lost_password' == $args['form'] ? __( 'Reset Password', 'woocommerce' ) : __( 'Save', 'woocommerce' ); ?>" /> </p> <?php wp_nonce_field( $args['form'] ); ?> <?php endif; //added by Szabesz ?> </form> 

Используя эти операторы if, мы проверяем разные состояния страницы с потерянным паролем и соответствующим образом меняем его.

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