更改 "reset password" wooCommerce 的网址



我在我的网站上使用WooCommerce,我已经创建了一个自定义登录和注册页面。新用户将被带到自定义登录页面,而不是看到标准的my-account登录页面。如果用户单击链接,则链接到自定义注册页面。

这两个页面都可以正常工作。在创建丢失密码部分时出现了问题。最初用户将被带到my-account/lost-password,但由于我想构建自定义页面,我需要创建一个新的丢失密码页面。

我已经使这个页面工作正常。一旦用户输入用户名或密码并点击按钮,就会向他们发送一封带有url链接的电子邮件,他们需要点击该链接才能进入允许他们重置密码的页面。这就是我的问题所在。

最初用户将被带到my-account页面,但由于我要避免这种情况,我希望用户必须使用我自己的自定义页面。

电子邮件中指定用户需要访问的url的代码如下:

<a class="link" href="<?php echo esc_url( add_query_arg( array( 'key' => $reset_key, 'login' => rawurlencode( $user_login ) ), wc_get_endpoint_url( 'lost-password', '', wc_get_page_permalink( 'myaccount' ) ) ) ); ?>"><?php _e( 'Click here to reset your password', 'woocommerce' ); ?></a>

我如何得到上面的url指向我的自定义页面,并允许用户重置他们的密码。我确实设法让url引导我到我自己的页面,但将其更改为:

<a class="link" href="<?php echo esc_url( add_query_arg( array( 'key' => $reset_key, 'login' => rawurlencode( $user_login ) ), get_page_link(1839) ) ) ; ?>"><?php _e( 'Click here to reset your password', 'woocommerce' ); ?></a>

但是重置用户密码时没有更新。


似乎这个问题与$reset_key$user_login没有传递到我的自定义表单有关。当使用:

<a class="link" href="<?php echo esc_url( add_query_arg( array( 'key' => $reset_key, 'login' => rawurlencode( $user_login ) ), wc_get_endpoint_url( 'lost-password', '', wc_get_page_permalink( 'myaccount' ) ) ) ); ?>">

在我的表单上有隐藏的输入,它们的值为$reset_key$user_login,然而,当使用:

<a class="link" href="<?php echo esc_url( add_query_arg( array( 'key' => $reset_key, 'login' => rawurlencode( $user_login ) ), wc_get_endpoint_url( 'lost-password', '', wc_get_page_permalink( 'myaccount' ) ) ) ); ?>"><?php _e( 'Click here to reset your password', 'woocommerce' ); ?></a>

这些隐藏的输入没有值。

是否有一种方法可以将这些参数传递给我的自定义表单,从而允许填充隐藏的输入并更新用户的密码?

重置WooCommerce到WordPress的忘记密码URL。

由于您必须登录才能查看网站,因此忘记密码无法访问WooCommerce页面。

将此添加到functions.php将密码URL重置为WordPress URL。

// Wordpress + WooCommerce Reset Password URL
function reset_pass_url()
{
    $siteURL = get_option('siteurl');
    return "{$siteURL}/wp-login.php?action=lostpassword";
}
add_filter('lostpassword_url', 'reset_pass_url', 11, 0);

您可以通过使用Jquery来做到这一点。:)

function changeReseturl(){
jQuery(".woocommerce-LostPassword.lost_password a").attr('href','your-login-url');
}
add_action('wp_footer','changeReseturl');

最新更新