Woocommerce限制我的帐户页面但不会丢失密码页面

时间:2018-03-05 07:35:39

标签: php wordpress redirect woocommerce

我有一个带Woocommerce的WordPress网站。在Woocommerce中,忘记密码URL与我的帐户页面(www.site.com/my-account/lost-password/)合并。

然后我创建了一个重定向功能,当用户点击"我的帐户"页面到"登录"页。这意味着我也限制它们访问“忘记密码”页面。

add_action( 'wp', 'redirect' );
function redirect() {
  if ( is_page(array('my-account', 'payment-screen', 'submit-resume', 'post-a-job')) && !is_user_logged_in() ) {
      wp_redirect( home_url('/login') );
      die();
  } elseif ( is_page(array( 'register', 'login' )) && is_user_logged_in() ) {
      wp_redirect( home_url('/my-account') );
      die();
  }
}

我想仅为www.site.com/my-account/限制未登录的用户,并将其重定向到www.site.com/login/但不是www.site.com/my-account/lost-password/。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我以这种方式解决:

add_action( 'template_redirect', 'class_to_login_page', 20 );
function class_to_login_page(){
  global $post;
  global $wp;
  $request = explode( '/', $wp->request );
  $page_id = get_option('woocommerce_myaccount_page_id');
  if(!is_user_logged_in() && $post->ID == (icl_object_id($page_id, 'page')) && end($request) !== 'lost-password'){
    wp_redirect( home_url('/login') );
    exit;
  }
}

我检查用户是否已登录,我的帐户页面的ID是否相等,以及是否不是丢失密码的端点。 希望对您有帮助;)

答案 1 :(得分:0)

我遇到了同样的问题并找到了解决方案。
首先,为丢失的密码创建一个新的简码。在 function.php 中使用此代码:

@Formula("(select sum(children.height) from children_table children inner join Parent p on children.parent_id=p.id where children.parent_id=parent_id)")
private BicDecimal totalHeight

创建一个新页面并使用此短代码[lost_password_form]。
现在,使用 function.php 中的此代码更改您的密码丢失页面:

()