WC_Checkout::process_customer PHP Method

process_customer() protected method

Create a new customer account if needed.
protected process_customer ( array $data )
$data array
    protected function process_customer($data)
    {
        $customer_id = get_current_user_id();
        if (!is_user_logged_in() && ($this->is_registration_required() || !empty($data['createaccount']))) {
            $username = !empty($data['account_username']) ? $data['account_username'] : '';
            $password = !empty($data['account_password']) ? $data['account_password'] : '';
            $customer_id = wc_create_new_customer($data['billing_email'], $username, $password);
            if (is_wp_error($customer_id)) {
                throw new Exception($customer_id->get_error_message());
            }
            wp_set_current_user($customer_id);
            wc_set_customer_auth_cookie($customer_id);
            // As we are now logged in, checkout will need to refresh to show logged in data
            WC()->session->set('reload_checkout', true);
            // Also, recalculate cart totals to reveal any role-based discounts that were unavailable before registering
            WC()->cart->calculate_totals();
        }
        // Add customer info from other fields.
        if ($customer_id && apply_filters('woocommerce_checkout_update_customer_data', true, $this)) {
            $customer = new WC_Customer($customer_id);
            $customer->set_first_name($data['billing_first_name']);
            $customer->set_last_name($data['billing_last_name']);
            foreach ($data as $key => $value) {
                if (is_callable(array($customer, "set_{$key}"))) {
                    $customer->{"set_{$key}"}($value);
                }
            }
            $customer->save();
        }
        do_action('woocommerce_checkout_update_user_meta', $customer_id, $data);
    }