Woocommerce将客户重定向到上一页

时间:2017-12-17 12:48:57

标签: php wordpress login woocommerce

我已应用所有可用的代码段,包括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;
  }

1 个答案:

答案 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/