Skip to main content

Creating a Custom Login for WooCommerce

// Custom login page redirect
function custom_woocommerce_login_redirect( $redirect, $user ) {
    $redirect_page_id = url_to_postid( $redirect );
    $checkout_page_id = wc_get_page_id( 'checkout' );
    
    if ( $redirect_page_id == $checkout_page_id ) {
        return $redirect;
    }
    
    return home_url('/custom-account-page/');
}
add_filter( 'woocommerce_login_redirect', 'custom_woocommerce_login_redirect', 10, 2 );

// Custom login form shortcode
function custom_woocommerce_login_form() {
    if ( is_user_logged_in() ) return '';
    
    ob_start();
    ?>
    <div class="custom-login-form">
        <h2>Login to Your Account</h2>
        <?php
        woocommerce_login_form( array(
            'redirect' => wc_get_page_permalink( 'myaccount' ),
            'remember' => true
        ) );
        ?>
        <p class="register-link">
            Don't have an account? <a href="/<?php echo esc_url( wp_registration_url() ); ?>">Register here</a>
        </p>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode( 'custom_woocommerce_login', 'custom_woocommerce_login_form' );