“重置我的密码”链接到其自身(页面刷新)

时间:2015-10-30 作者:Dennis

我正在使用WooCommerce。

当用户进入“丢失密码”页面时,键入电子邮件地址并按“重置密码”,页面将重新加载。我不确定wordpress通常做什么,但我希望它显示“电子邮件已发送…”页面或文本。

电子邮件本身发送得很好。

可能有什么问题?

类似地,当用户创建新密码(通过电子邮件链接)并单击“保存密码”时,下一页又是丢失密码页!这有点令人困惑。

2 个回复
SO网友:Dennis

我刚刚找到了解决我问题的另一个方法。问题是消息没有正确显示。通过将此代码添加到我的自定义CSS(在“外观”下),现在将再次显示消息:

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

SO网友:szabesz

这就是我提出的解决方案:我们可以覆盖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开发人员将来会更改此模板,因为默认行为确实令人困惑,我想知道为什么首先要以这种方式实现它。

相关推荐