0

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' );
?>

1 Answer 1

0

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/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.