How to update billing_email when user_email is updated

I’m trying to achieve two way synchronization between user_email and billing_email (the key for woocommerce emails). So far, I have it working that when a customer edits/updates their billing email address their user_email gets updated with the following code:

add_action( 'woocommerce_customer_save_address','isa_customer_save_address', 10, 1);

function isa_customer_save_address() {

global $woocommerce;
$user_id = get_current_user_id();

        wp_update_user( array ( 'ID' => $user_id, 'user_email' =>    $_POST['billing_email'] ) ) ;

}

Now how do I update a customer’s billing_email when they edit/updates their user_email?

Related posts

1 comment

  1. This code should do it for you. It add an action to the updating of the WordPress profile, checks if the email has been updated, and if so, it updates the Woocommerce address as well.

    add_action('profile_update', 'sync_woocommerce_email', 10, 2) ;
    
    function sync_woocommerce_email( $user_id, $old_user_data ) {
        $current_user = wp_get_current_user();
    
        if ($current_user->user_email != $old_user_data->user_email) {
            wp_update_user( array ( 'ID' => $current_user->ID, 'billing_email' => $current_user->user_email ) ) ;
         }
    }
    

    Edit: I did something wrong here, I’m guessing its pretty basic I just haven’t seen it yet.

Comments are closed.