这就是我提出的解决方案:我们可以覆盖WooCommerce模板文件并对其进行更改。我不喜欢覆盖模板文件,因为将来WooCommerce模板可能会更改,我们必须再次复制它并将更改应用到覆盖模板,但我找不到更简单的方法来完成。
从WooCommerce插件目录复制模板/我的帐户/表单丢失密码。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开发人员将来会更改此模板,因为默认行为确实令人困惑,我想知道为什么首先要以这种方式实现它。