Update billing if account form changes.
This commit is contained in:
parent
d13dfa65c6
commit
2ca2cc0f6c
|
@ -172,7 +172,6 @@ class WC_Form_Handler {
|
||||||
* Save the password/account details and redirect back to the my account page.
|
* Save the password/account details and redirect back to the my account page.
|
||||||
*/
|
*/
|
||||||
public static function save_account_details() {
|
public static function save_account_details() {
|
||||||
|
|
||||||
if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) {
|
if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -183,31 +182,34 @@ class WC_Form_Handler {
|
||||||
|
|
||||||
wc_nocache_headers();
|
wc_nocache_headers();
|
||||||
|
|
||||||
$errors = new WP_Error();
|
$user_id = get_current_user_id();
|
||||||
$user = new stdClass();
|
|
||||||
|
|
||||||
$user->ID = (int) get_current_user_id();
|
if ( $user_id <= 0 ) {
|
||||||
$current_user = get_user_by( 'id', $user->ID );
|
|
||||||
|
|
||||||
if ( $user->ID <= 0 ) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$account_first_name = ! empty( $_POST['account_first_name'] ) ? wc_clean( $_POST['account_first_name'] ) : '';
|
$current_user = get_user_by( 'id', $user_id );
|
||||||
$account_last_name = ! empty( $_POST['account_last_name'] ) ? wc_clean( $_POST['account_last_name'] ) : '';
|
$current_first_name = $current_user->first_name;
|
||||||
$account_email = ! empty( $_POST['account_email'] ) ? wc_clean( $_POST['account_email'] ) : '';
|
$current_last_name = $current_user->last_name;
|
||||||
$pass_cur = ! empty( $_POST['password_current'] ) ? $_POST['password_current'] : '';
|
$current_email = $current_user->user_email;
|
||||||
$pass1 = ! empty( $_POST['password_1'] ) ? $_POST['password_1'] : '';
|
|
||||||
$pass2 = ! empty( $_POST['password_2'] ) ? $_POST['password_2'] : '';
|
$account_first_name = ! empty( $_POST['account_first_name'] ) ? wc_clean( $_POST['account_first_name'] ): '';
|
||||||
|
$account_last_name = ! empty( $_POST['account_last_name'] ) ? wc_clean( $_POST['account_last_name'] ) : '';
|
||||||
|
$account_email = ! empty( $_POST['account_email'] ) ? wc_clean( $_POST['account_email'] ) : '';
|
||||||
|
$pass_cur = ! empty( $_POST['password_current'] ) ? $_POST['password_current'] : '';
|
||||||
|
$pass1 = ! empty( $_POST['password_1'] ) ? $_POST['password_1'] : '';
|
||||||
|
$pass2 = ! empty( $_POST['password_2'] ) ? $_POST['password_2'] : '';
|
||||||
$save_pass = true;
|
$save_pass = true;
|
||||||
|
|
||||||
|
$user = new stdClass();
|
||||||
|
$user->ID = $user_id;
|
||||||
$user->first_name = $account_first_name;
|
$user->first_name = $account_first_name;
|
||||||
$user->last_name = $account_last_name;
|
$user->last_name = $account_last_name;
|
||||||
|
|
||||||
// Prevent emails being displayed, or leave alone.
|
// Prevent emails being displayed, or leave alone.
|
||||||
$user->display_name = is_email( $current_user->display_name ) ? $user->first_name : $current_user->display_name;
|
$user->display_name = is_email( $current_user->display_name ) ? $user->first_name : $current_user->display_name;
|
||||||
|
|
||||||
// Handle required fields
|
// Handle required fields.
|
||||||
$required_fields = apply_filters( 'woocommerce_save_account_details_required_fields', array(
|
$required_fields = apply_filters( 'woocommerce_save_account_details_required_fields', array(
|
||||||
'account_first_name' => __( 'First name', 'woocommerce' ),
|
'account_first_name' => __( 'First name', 'woocommerce' ),
|
||||||
'account_last_name' => __( 'Last name', 'woocommerce' ),
|
'account_last_name' => __( 'Last name', 'woocommerce' ),
|
||||||
|
@ -252,6 +254,7 @@ class WC_Form_Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow plugins to return their own errors.
|
// Allow plugins to return their own errors.
|
||||||
|
$errors = new WP_Error();
|
||||||
do_action_ref_array( 'woocommerce_save_account_details_errors', array( &$errors, &$user ) );
|
do_action_ref_array( 'woocommerce_save_account_details_errors', array( &$errors, &$user ) );
|
||||||
|
|
||||||
if ( $errors->get_error_messages() ) {
|
if ( $errors->get_error_messages() ) {
|
||||||
|
@ -261,9 +264,28 @@ class WC_Form_Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( wc_notice_count( 'error' ) === 0 ) {
|
if ( wc_notice_count( 'error' ) === 0 ) {
|
||||||
|
|
||||||
wp_update_user( $user );
|
wp_update_user( $user );
|
||||||
|
|
||||||
|
// Update customer object to keep data in sync.
|
||||||
|
$customer = new WC_Customer( $user->ID );
|
||||||
|
|
||||||
|
if ( $customer ) {
|
||||||
|
// Keep billing data in sync if data changed.
|
||||||
|
if ( is_email( $user->user_email ) && $current_email !== $user->user_email ) {
|
||||||
|
$customer->set_billing_email( $user->user_email );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $current_first_name !== $user->first_name ) {
|
||||||
|
$customer->set_billing_first_name( $user->first_name );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $current_last_name !== $user->last_name ) {
|
||||||
|
$customer->set_billing_last_name( $user->last_name );
|
||||||
|
}
|
||||||
|
|
||||||
|
$customer->save();
|
||||||
|
}
|
||||||
|
|
||||||
wc_add_notice( __( 'Account details changed successfully.', 'woocommerce' ) );
|
wc_add_notice( __( 'Account details changed successfully.', 'woocommerce' ) );
|
||||||
|
|
||||||
do_action( 'woocommerce_save_account_details', $user->ID );
|
do_action( 'woocommerce_save_account_details', $user->ID );
|
||||||
|
|
Loading…
Reference in New Issue