我有一个带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/
。我怎么能这样做?
答案 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 中的此代码更改您的密码丢失页面:
()