Separate registration page in WooCommerce website

前端 未结 3 1966
青春惊慌失措
青春惊慌失措 2020-12-06 21:56

Can anybody help me build a separate registration page in WooCommerce instead of displaying it in the my-account page?

In the my-account p

相关标签:
3条回答
  • 2020-12-06 22:10

    I finally figured out the code to have separate registration and login pages via individual links in the header.

    You will need to edit 2 files in your child theme:

    1. functions.php and
    2. form-login.php

    I have attached txt files for the code

    1) functions.php: You want to create a register link in the header that links to the login page but also sets an action indicating you have clicked register. So this:

    $aux_links_output .= ''. __("Login", "swiftframework") .''. "\n";
    

    becomes this:

    $aux_links_output .= ''. __("Login", "swiftframework") .''. "\n";
    $aux_links_output .= ''. __("Register", "swiftframework") .''. "\n";
    

    2) form-login.php code: Here you want to create an if,else statement. If you clicked register then goto register page, else goto login page:

    <?php if( isset( $_GET['action']) && $_GET['action'] == "register") : ?>
    

    Section for registration

    <?php else : ?>
    

    Section for Login form

    <?php endif; ?>
    

    Be careful of the wrappings

    Thanks

    0 讨论(0)
  • 2020-12-06 22:21

    edit your form-login.php file and seperate the login form and registration form in two different sections say section A and B.

    now check for a GET parameter in the page which will define which section to show. By default login will be shown, if parameter is found and is "register", show registration section

    if( isset( $_GET['action']) && $_GET['action'] == "register"){
        // Section for registration
    }else {
        // Section for Login form
    }
    

    you can provide a link for registration as

    <a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '?action=register"> register </a>
    
    0 讨论(0)
  • 2020-12-06 22:27

    The Code for form-login.php

    is

    --- START SECTION ---

    <?php
    /**
     * Login Form
     *
     * @author      WooThemes
     * @package     WooCommerce/Templates
     * @version     2.2.6
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly
    }
    
    ?>
    
    <?php wc_print_notices(); ?>
    
    <?php do_action( 'woocommerce_before_customer_login_form' ); ?>
    
    <?php if ( get_option( 'woocommerce_enable_myaccount_registration' ) === 'yes' ) : ?>
    
    <div class="col2-set" id="customer_login">
    
        <div class="col-1">
    
    <?php endif; ?>
    
            <h2><?php _e( 'Login', 'woocommerce' ); ?></h2>
    
            <form method="post" class="login">
    
                <?php do_action( 'woocommerce_login_form_start' ); ?>
    
                <p class="form-row form-row-wide">
                    <label for="username"><?php _e( 'Username or email address', 'woocommerce' ); ?> <span class="required">*</span></label>
                    <input type="text" class="input-text" name="username" id="username" value="<?php if ( ! empty( $_POST['username'] ) ) echo esc_attr( $_POST['username'] ); ?>" />
                </p>
                <p class="form-row form-row-wide">
                    <label for="password"><?php _e( 'Password', 'woocommerce' ); ?> <span class="required">*</span></label>
                    <input class="input-text" type="password" name="password" id="password" />
                </p>
    
                <?php do_action( 'woocommerce_login_form' ); ?>
    
                <p class="form-row">
                    <?php wp_nonce_field( 'woocommerce-login' ); ?>
                    <input type="submit" class="button" name="login" value="<?php esc_attr_e( 'Login', 'woocommerce' ); ?>" />
                    <label for="rememberme" class="inline">
                        <input name="rememberme" type="checkbox" id="rememberme" value="forever" /> <?php _e( 'Remember me', 'woocommerce' ); ?>
                    </label>
                </p>
                <p class="lost_password">
                    <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?', 'woocommerce' ); ?></a>
                </p>
    
                <?php do_action( 'woocommerce_login_form_end' ); ?>
    
            </form>
    
    <?php if ( get_option( 'woocommerce_enable_myaccount_registration' ) === 'yes' ) : ?>
    
        </div>
    
        <div class="col-2">
    
            <h2><?php _e( 'Register', 'woocommerce' ); ?></h2>
    
            <form method="post" class="register">
    
                <?php do_action( 'woocommerce_register_form_start' ); ?>
    
                <?php if ( 'no' === get_option( 'woocommerce_registration_generate_username' ) ) : ?>
    
                    <p class="form-row form-row-wide">
                        <label for="reg_username"><?php _e( 'Username', 'woocommerce' ); ?> <span class="required">*</span></label>
                        <input type="text" class="input-text" name="username" id="reg_username" value="<?php if ( ! empty( $_POST['username'] ) ) echo esc_attr( $_POST['username'] ); ?>" />
                    </p>
    
                <?php endif; ?>
    
                <p class="form-row form-row-wide">
                    <label for="reg_email"><?php _e( 'Email address', 'woocommerce' ); ?> <span class="required">*</span></label>
                    <input type="email" class="input-text" name="email" id="reg_email" value="<?php if ( ! empty( $_POST['email'] ) ) echo esc_attr( $_POST['email'] ); ?>" />
                </p>
    
                <?php if ( 'no' === get_option( 'woocommerce_registration_generate_password' ) ) : ?>
    
                    <p class="form-row form-row-wide">
                        <label for="reg_password"><?php _e( 'Password', 'woocommerce' ); ?> <span class="required">*</span></label>
                        <input type="password" class="input-text" name="password" id="reg_password" />
                    </p>
    
                <?php endif; ?>
    
                <!-- Spam Trap -->
                <div style="<?php echo ( ( is_rtl() ) ? 'right' : 'left' ); ?>: -999em; position: absolute;"><label for="trap"><?php _e( 'Anti-spam', 'woocommerce' ); ?></label><input type="text" name="email_2" id="trap" tabindex="-1" /></div>
    
                <?php do_action( 'woocommerce_register_form' ); ?>
                <?php do_action( 'register_form' ); ?>
    
                <p class="form-row">
                    <?php wp_nonce_field( 'woocommerce-register' ); ?>
                    <input type="submit" class="button" name="register" value="<?php esc_attr_e( 'Register', 'woocommerce' ); ?>" />
                </p>
    
                <?php do_action( 'woocommerce_register_form_end' ); ?>
    
            </form>
    
        </div>
    
    </div>
    <?php endif; ?>
    
    <?php do_action( 'woocommerce_after_customer_login_form' ); ?>
    

    --- END SECTION ---

    Whet can i put this snippet :

    --- START SECTION ---

    if( isset( $_GET['action']) && $_GET['action'] == "register"){
        // Section for registration
    }else {
        // Section for Login form
    }
    

    --- END START

    and this URL

    --- START SECTION ---

    <a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '?action=register"> register </a>
    

    --- END SECTION ---

    0 讨论(0)
提交回复
热议问题