TransWikia.com

Custom Registration Fields woocommerce

WordPress Development Asked on January 2, 2022

Hi I am trying to make a custom Registration page for woocommerce, till validation it works fine but when i am trying to insert the data in database nothing happens. this is the sample code i am using ‘

<?php

function wooc_extra_register_fields() {

       ?>



       <p class="form-row form-row-first">

       <label for="reg_billing_first_name"><?php _e( 'First name', 'woocommerce' ); ?><span class="required">*</span></label>

       <input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="<?php if ( ! empty( $_POST['billing_first_name'] ) ) esc_attr_e( $_POST['billing_first_name'] ); ?>" />

       </p>



       <p class="form-row form-row-last">

       <label for="reg_billing_last_name"><?php _e( 'Last name', 'woocommerce' ); ?><span class="required">*</span></label>

       <input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="<?php if ( ! empty( $_POST['billing_last_name'] ) ) esc_attr_e( $_POST['billing_last_name'] ); ?>" />

       </p>



       <div class="clear"></div>



       <p class="form-row form-row-wide">

       <label for="reg_billing_phone"><?php _e( 'Phone', 'woocommerce' ); ?><span class="required">*</span></label>

       <input type="Number" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php if ( ! empty( $_POST['billing_phone'] ) ) esc_attr_e( $_POST['billing_phone'] ); ?>" />

       </p>


        <p class="form-row form-row-wide">

       <label for="reg_num"><?php _e( 'MCI Registration Num', 'woocommerce' ); ?><span class="required">*</span></label>

       <input type="text" class="input-text" name="reg_num" id="reg_num" value="<?php if ( ! empty( $_POST['reg_num'] ) ) esc_attr_e( $_POST['reg_num'] ); ?>" />

       </p>

        <p class="form-row form-row-wide">

       <label for="Year_of_reg"><?php _e( 'Year of Registration', 'woocommerce' ); ?><span class="required">*</span></label>

       <input type="Number" class="input-text" name="Year_of_reg" id="Year_of_reg" value="<?php if ( ! empty( $_POST['Year_of_reg'] ) ) esc_attr_e( $_POST['Year_of_reg'] ); ?>" />

       </p>


        <p class="form-row form-row-wide">

       <label for="qualification"><?php _e( 'Qualification', 'woocommerce' ); ?><span class="required">*</span></label>

       <input type="text" class="input-text" name="qualification" id="qualification" value="<?php if ( ! empty( $_POST['qualification'] ) ) esc_attr_e( $_POST['qualification'] ); ?>" />

       </p>




       <?php

}



add_action( 'woocommerce_register_form_start', 'wooc_extra_register_fields' );



?>

'<?php

function wooc_validate_extra_register_fields( $username, $email, $validation_errors ) 
{

       if ( isset( $_POST['billing_first_name'] ) && empty( $_POST['billing_first_name'] ) ) 
       {

              $validation_errors->add( 'billing_first_name_error', __( '<strong>Error</strong>: First name is required!', 'woocommerce' ) );

       }



       if ( isset( $_POST['billing_last_name'] ) && empty( $_POST['billing_last_name'] ) ) 
       {

              $validation_errors->add( 'billing_last_name_error', __( '<strong>Error</strong>: Last name is required!.', 'woocommerce' ) );

       }



       if ( isset( $_POST['billing_phone'] ) && empty( $_POST['billing_phone'] ) ) 
       {

              $validation_errors->add( 'billing_phone_error', __( '<strong>Error</strong>: Phone is required!.', 'woocommerce' ) );

       }


       if ( isset( $_POST['reg_num'] ) && empty( $_POST['reg_num'] ) ) 
       {

              $validation_errors->add( 'reg_num_error', __( '<strong>Error</strong>: Registration Number is required! if you are facing any problem give us a call or contact us on [email protected] .', 'woocommerce' ) );

       }


       if ( isset( $_POST['Year_of_reg'] ) && empty( $_POST['Year_of_reg'] ) ) 
       {

              $validation_errors->add( 'year_of_reg_error', __( '<strong>Error</strong>: MCI Year of Registration is required!.', 'woocommerce' ) );

       }




    }


}


add_action( 'woocommerce_register_post', 'wooc_validate_extra_register_fields', 10, 5 );




function wooc_save_extra_register_fields( $customer_id ) {

   if ( isset( $_POST['billing_first_name'] ) ) {
        // WordPress default first name field.
        update_user_meta( $customer_id, 'first_name', sanitize_text_field( $_POST['billing_first_name'] ) );

        // WooCommerce billing first name.
        update_user_meta( $customer_id, 'billing_first_name', sanitize_text_field( $_POST['billing_first_name'] ) );
    }

    if ( isset( $_POST['billing_last_name'] ) ) {
        // WordPress default last name field.
        update_user_meta( $customer_id, 'last_name', sanitize_text_field( $_POST['billing_last_name'] ) );

        // WooCommerce billing last name.
        update_user_meta( $customer_id, 'billing_last_name', sanitize_text_field( $_POST['billing_last_name'] ) );
    }

    if ( isset( $_POST['billing_phone'] ) ) {
        // WooCommerce billing phone
        update_user_meta( $customer_id, 'billing_phone', sanitize_text_field( $_POST['billing_phone'] ) );
    }

    if ( isset( $_POST['reg_num'] ) ) {
        // WooCommerce billing address
        update_user_meta( $customer_id, 'reg_num', sanitize_text_field( $_POST['reg_num'] ) );
    }

    if ( isset( $_POST['Year_of_reg'] ) ) {
        // WooCommerce billing postcode
        update_user_meta( $customer_id, 'Year_of_reg', sanitize_text_field( $_POST['Year_of_reg'] ) );
    }

    if ( isset( $_POST['qualification'] ) ) {
        // WooCommerce billing city
        update_user_meta( $customer_id, 'qualification', sanitize_text_field( $_POST['qualification'] ) );
    }


}

add_action( 'woocommerce_created_customer', 'wooc_save_extra_register_fields' );
?>

One Answer

There's a plugin called "WC Address Fields on User Registration" which might do what you need. You can add add the billing/shipping fields (name, address, company, phone etc.) to the normal Woocommerce customer registration page - https://en-gb.wordpress.org/plugins/wc-afour/

Answered by TJ152 on January 2, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP