【问题标题】:Changing the URL for the "reset password" woocommerce更改“重置密码”woocommerce 的 URL
【发布时间】:2017-03-05 14:24:11
【问题描述】:

我在我的网站上使用 WooCommerce,并创建了自定义登录和注册页面。新用户不会看到标准的my-account 登录页面,而是转到自定义登录页面。如果用户单击链接,这将链接到自定义注册页面。

这两个页​​面都可以正常工作。在创建 lost your password 部分时会出现问题。最初用户会被带到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>

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

<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>

这些隐藏的输入没有值。

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

【问题讨论】:

    标签: php wordpress woocommerce e-commerce


    【解决方案1】:

    将忘记密码的 URL 从 WooCommerce 重置为 WordPress。由于您必须登录才能查看该站点,因此忘记密码无法访问 WooCommerce 页面。将此添加到 functions.php 会将密码 url 重置为 WordPress url。

    // Wordpress + WooCommerce 重置密码网址

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 你到底为什么要为此使用 jQuery??
      猜你喜欢
      • 1970-01-01
      • 2018-01-15
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多