woocommerce login / register 重定向

WooCommerce允许用户在My Account页面登录或注册,成功后都会跳转到My Account页面。本文用一个实例介绍如何更改这个默认行为。例如要求用户必须登录才能结账时,先跳转到My Account页面完成信息认证,成功后直接跳到结账页面完成购买。

首先,修改登录/注册表单

找到woocommerce/templates/myaccount/form-login.php,拷贝到主题目录/woocommerce/myaccount/form-login.php

打开form-login.php,加入获取redirect地址的代码,位置如下所示

<?php do_action('woocommerce_before_customer_login_form'); ?>

<?php $redirect = $_REQUEST['redirect_to']; ?>

然后分别在登录和注册表单的提交按钮前加入隐藏字段,记录转向地址。

<input type="hidden" name="redirect" value="<?php echo esc_url( $redirect ) ?>" />

<input type="submit" class="button" name="login" value="<?php _e( 'Login', 'woocommerce' ); ?>" />   //找到这个标签

注册表单处添加:

<input type="hidden" name="redirect" value="<?php echo esc_url( $redirect ) ?>" />

<input type="submit" class="button" name="register" value="<?php _e( 'Register', 'woocommerce' ); ?>" />   //找到这个标签

强制访问checkout的guest用户登录

在主题的functions.php中加入如下代码

add_action( 'woocommerce_before_checkout_form', 'theme_wc_redirect_guest_user' );

function theme_wc_redirect_guest_user(){

    if( !is_user_logged_in() ) {

        $checkout_url = get_permalink( woocommerce_get_page_id('checkout') );

        $args['redirect_to'] = urlencode( $checkout_url );

        $login_url = add_query_arg( $args, get_permalink( woocommerce_get_page_id('myaccount') ) );

        wp_safe_redirect($login_url);

    }

}

最后,加入注册跳转功能

登录表单只要有redirect这个隐藏字段,就能自动跳转,注册表单不行,所以在主题的functions.php中加入如下代码。

add_filter ( 'woocommerce_registration_redirect', 'theme_wc_registration_redirect' );

function theme_wc_registration_redirect( $redirect ) {

    if ( $_POST['redirect'] ) {

        $redirect = $_POST['redirect'];

    }

    return $redirect;

}

完事!

未经允许不得转载:哈勃私语 » woocommerce login / register 重定向

本文共1548个字 创建时间:2017年11月8日17:59   

分享到:更多 ()