Separate registration page on the WooCommerce website

Can someone help me create a separate WooCommerce sign-up page instead of displaying it on my-account page?

On the my-account page, I want to display a link that will lead the buyer to the registration page.

+3
source share
3 answers

edit the form-login.php and separate the login form and registration form in two different sections, for example sections A and B.

now check the GET parameter on the page, which will determine which section will be shown. By default, a login will be displayed, if the parameter is found and "registered", show the registration section

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

you can specify the registration link as

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

Code for form-login.php

there is

--- SECTION START ---

 <?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 OF SECTION ---

Is it possible to add this fragment:

--- SECTION START ---

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

--- END START

and this url

--- SECTION START ---

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

--- END OF SECTION ---

+1
source

Finally, I found out that the code has separate registration and login pages via separate links in the header.

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

  • functions.php and
  • form-login.php

I added txt files for code

1) functions.php : you want to create a registration link in the header, which links to the login page, and also sets up an action indicating that you clicked register. So:

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

becomes the following:

 $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 press the register, then go to the registration page, go to the login page:

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

Section for registration

 <?php else : ?> 

Section for login form

 <?php endif; ?> 

Be careful with wrappers.

thanks

0
source

Source: https://habr.com/ru/post/971271/


All Articles