我已应用所有可用的代码段,包括this,但是当客户登录时,它会重定向到我的帐户页面,这很烦人。怎么解决这个?
为什么代码下面没有工作?
add_filter( 'woocommerce_login_redirect', 'wc_custom_user_redirect', 10, 2 );
function wc_custom_user_redirect( $redirect, $user ) {
$role = $user->roles[0];
if ( $role == 'customer' ) {
//Redirect to the previous visited page or, if not available, to home
$redirect = wp_get_referer() ? wp_get_referer() : home_url();
}
return $redirect;
}
答案 0 :(得分:0)
首先,在wp_get_referer()
过滤器处的woocommerce_login_redirect
将定位到帐户页面,您需要获取引荐来源网址。第二件事是它对我和其他许多人都不起作用,而$_SERVER['HTTP_REFERER']
毫无问题地抓住了引荐来源。
这可以使用PHP会话完成,但是它们会在Ngix和Varnish上通过服务器缓存引起问题。
可能的解决方案是:
传递一个隐藏的引荐来源网址字段,如下所示:
https://gist.github.com/EvanHerman/492c09fbb584e0c428ae
使用数据库临时存储每个用户ID的上一页URL。具有唯一ID的查询字符串将添加到WooCommerce登录表单的URL。我在插件中使用了此解决方案:
https://wordpress.org/plugins/extra-settings-for-woocommerce/