Created
June 24, 2017 17:02
-
-
Save zecka/e68eb8c41a8916a289863826cc36c6f9 to your computer and use it in GitHub Desktop.
Add the billing form to the registration page of woocommerce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Function to check starting char of a string | |
function zk_starts_with($haystack, $needle){ | |
return $needle === '' || strpos($haystack, $needle) === 0; | |
} | |
// Custom function to display the Billing Address form to registration page | |
function zk_add_billing_form_to_registration(){ | |
global $woocommerce; | |
$checkout = $woocommerce->checkout(); | |
foreach ( $checkout->get_checkout_fields( 'billing' ) as $key => $field ){ | |
if($key!='billing_email'){ | |
woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); | |
} | |
} | |
} | |
add_action('woocommerce_register_form_start','zk_add_billing_form_to_registration'); | |
// Custom function to save Usermeta or Billing Address of registered user | |
function zk_save_billing_address($user_id){ | |
global $woocommerce; | |
$address = $_POST; | |
foreach ($address as $key => $field){ | |
if(zk_starts_with($key,'billing_')){ | |
// Condition to add firstname and last name to user meta table | |
if($key == 'billing_first_name' || $key == 'billing_last_name'){ | |
$new_key = explode('billing_',$key); | |
update_user_meta( $user_id, $new_key[1], $_POST[$key] ); | |
} | |
update_user_meta( $user_id, $key, $_POST[$key] ); | |
} | |
} | |
} | |
add_action('woocommerce_created_customer','zk_save_billing_address'); | |
// Registration page billing address form Validation | |
function zk_validation_billing_address(){ | |
global $woocommerce; | |
$address = $_POST; | |
foreach ($address as $key => $field){ | |
// Validation: Required fields | |
if(zk_starts_with($key,'billing_')){ | |
if($key == 'billing_country' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please select a country.', 'woocommerce' ) ); | |
} | |
if($key == 'billing_first_name' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please enter first name.', 'woocommerce' ) ); | |
} | |
if($key == 'billing_last_name' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please enter last name.', 'woocommerce' ) ); | |
} | |
if($key == 'billing_address_1' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please enter address.', 'woocommerce' ) ); | |
} | |
if($key == 'billing_city' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please enter city.', 'woocommerce' ) ); | |
} | |
if($key == 'billing_state' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please enter state.', 'woocommerce' ) ); | |
} | |
if($key == 'billing_postcode' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please enter a postcode.', 'woocommerce' ) ); | |
} | |
if($key == 'billing_phone' && $field == ''){ | |
$woocommerce->add_error( '<strong>' . __( 'ERROR', 'woocommerce' ) . '</strong>: ' . __( 'Please enter phone number.', 'woocommerce' ) ); | |
} | |
} | |
} | |
} | |
add_action('register_post','zk_validation_billing_address'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment