WooCommerce - 在用户重置密码后重定向用户
WooCommerce - Redirecting a User after They've Reset Their Password
我正在为客户设置 WooCommerce 商店,他要求在提交重设密码表单后将用户重定向回登录表单。
这可能吗?哪个函数控制这个?
提前致谢。
我也遇到了同样的问题。我认为控制它的函数在文件 woocommerce/includes/class-wc-form-handler.php 中。我更改了以下行:
wp_redirect(add_query_arg('reset','true',remove_query_arg(数组('key','login')) ));
和
wp_redirect(get_permalink(get_option('woocommerce_myaccount_page_id')));
进行此更改后,您将被重定向到我的帐户页面,客户可以在该页面登录,但是这样做当然有两个问题:
- 客户没有收到密码恢复成功的消息
- 进行 woocommerce 更新时,文件被原始文件覆盖
如果有人能提出 "update-secure" 解决方案,那就太好了。
此致
克里斯托夫
有人问我是否要这样做,我想我会说服他们不要这样做,但这是我想出的办法,这样您就可以看到消息,然后在 5 秒内被重定向。添加 message/link 让他们知道您将重定向。另外,如果您将模板文件添加到主题中,这将持续到 WooCommerce 升级
将 form-lost-password.php 模板文件添加到您的主题并添加以下代码:
if ( $_GET[reset] = true && ( 'lost_password' == $args['form']) ) {
$my_account_url = get_site_url() . '/my-account';
echo "<script>window.setTimeout(function(){window.location.replace('$my_account_url')}, 5000)</script>";
}
如果您不想延迟时间,请删除 window.setTimeout() 并使用 window.location.replace('$my_account_url').
更简洁的解决方案是使用 woocommerce_customer_reset_password
操作进行重定向:
function woocommerce_new_pass_redirect( $user ) {
wp_redirect( get_permalink(woocommerce_get_page_id('myaccount')));
exit;
}
add_action( 'woocommerce_customer_reset_password', 'woocommerce_new_pass_redirect' );
这段代码可以放在functions.php
.
我正在为客户设置 WooCommerce 商店,他要求在提交重设密码表单后将用户重定向回登录表单。
这可能吗?哪个函数控制这个?
提前致谢。
我也遇到了同样的问题。我认为控制它的函数在文件 woocommerce/includes/class-wc-form-handler.php 中。我更改了以下行:
wp_redirect(add_query_arg('reset','true',remove_query_arg(数组('key','login')) ));
和
wp_redirect(get_permalink(get_option('woocommerce_myaccount_page_id')));
进行此更改后,您将被重定向到我的帐户页面,客户可以在该页面登录,但是这样做当然有两个问题:
- 客户没有收到密码恢复成功的消息
- 进行 woocommerce 更新时,文件被原始文件覆盖
如果有人能提出 "update-secure" 解决方案,那就太好了。
此致 克里斯托夫
有人问我是否要这样做,我想我会说服他们不要这样做,但这是我想出的办法,这样您就可以看到消息,然后在 5 秒内被重定向。添加 message/link 让他们知道您将重定向。另外,如果您将模板文件添加到主题中,这将持续到 WooCommerce 升级
将 form-lost-password.php 模板文件添加到您的主题并添加以下代码:
if ( $_GET[reset] = true && ( 'lost_password' == $args['form']) ) {
$my_account_url = get_site_url() . '/my-account';
echo "<script>window.setTimeout(function(){window.location.replace('$my_account_url')}, 5000)</script>";
}
如果您不想延迟时间,请删除 window.setTimeout() 并使用 window.location.replace('$my_account_url').
更简洁的解决方案是使用 woocommerce_customer_reset_password
操作进行重定向:
function woocommerce_new_pass_redirect( $user ) {
wp_redirect( get_permalink(woocommerce_get_page_id('myaccount')));
exit;
}
add_action( 'woocommerce_customer_reset_password', 'woocommerce_new_pass_redirect' );
这段代码可以放在functions.php
.