• Hey!
    After the latest update something broke with my script.
    What has changed here? ??

    add_action(‘woocommerce_thankyou’, ‘wc_register_new_customers’, 10, 1);
    function wc_register_new_customers( $order_id ) {
    if(is_user_logged_in()) return; // Only for unlogged users

    // Get an instance of the WC_Order object
    $order = wc_get_order($order_id);

    // Get the customer billing email from the order
    $billing_email = $order->get_billing_email();

    // check if there are any users with the billing email as user or email
    $email = email_exists( $billing_email );
    $user = username_exists( $billing_email );

    // if the UID is null, then it’s a guest checkout
    if ( $user == false && $email == false ) {

    $random_password = wp_generate_password();

    // Create new user with email as username & newly created pw
    $user_id = wp_create_user( $billing_email, $random_password, $billing_email );

    //send PW
    $wc = new WC_Emails();
    $wc->customer_new_account($user_id);

    // WC guest customer identification
    update_user_meta( $user_id, ‘guest’, ‘yes’ );

    //user’s billing data
    update_user_meta( $user_id, ‘billing_address_1’, $order->get_billing_address_1() );
    update_user_meta( $user_id, ‘billing_address_2’, $order->get_billing_address_2() );
    update_user_meta( $user_id, ‘billing_city’, $order->get_billing_city() );
    update_user_meta( $user_id, ‘billing_company’, $order->get_billing_company() );
    update_user_meta( $user_id, ‘billing_country’, $order->get_billing_country() );
    update_user_meta( $user_id, ‘billing_email’, $order->get_billing_email() );
    update_user_meta( $user_id, ‘billing_first_name’, $order->get_billing_first_name() );
    update_user_meta( $user_id, ‘billing_last_name’, $order->get_billing_last_name() );
    update_user_meta( $user_id, ‘billing_phone’, $order->get_billing_phone() );
    update_user_meta( $user_id, ‘billing_postcode’, $order->get_billing_postcode() );
    update_user_meta( $user_id, ‘billing_state’, $order->get_billing_state() );

    // user’s shipping data
    update_user_meta( $user_id, ‘shipping_address_1’, $order->get_shipping_address_1() );
    update_user_meta( $user_id, ‘shipping_address_2’, $order->get_shipping_address_2() );
    update_user_meta( $user_id, ‘shipping_city’, $order->get_shipping_city() );
    update_user_meta( $user_id, ‘shipping_company’, $order->get_shipping_company() );
    update_user_meta( $user_id, ‘shipping_country’, $order->get_shipping_country() );
    update_user_meta( $user_id, ‘shipping_first_name’, $order->get_shipping_first_name() );
    update_user_meta( $user_id, ‘shipping_last_name’, $order->get_shipping_last_name() );
    update_user_meta( $user_id, ‘shipping_method’, $order->get_shipping_method() );
    update_user_meta( $user_id, ‘shipping_postcode’, $order->get_shipping_postcode() );
    update_user_meta( $user_id, ‘shipping_state’, $order->get_shipping_state() );

    // Update to “customer” user role
    update_user_meta( $user_id, ‘wp_capabilities’, array(‘customer’ => true) );

    wc_update_new_customer_past_orders( $user_id );

    // Get WP_User
    $user = new WP_User( intval( $user_id ) );

    // Creates, stores, then returns a password reset key for user.
    $reset_key = get_password_reset_key( $user );

    // Send the WC_email Customer Reset Password
    $wc_emails = WC()->mailer()->get_emails();
    $wc_emails[‘WC_Email_Customer_Reset_Password’]->trigger( $user->user_login, $reset_key );

    }
    }

Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter calimellow

    (@calimellow)

    Is there a way to instead of using this type of script, force the customer to create an account on checkout? I don’t want them to be able to, I want to force them to create a password.

    Thread Starter calimellow

    (@calimellow)

    Nevermind I figured how to do this.
    Is there a way to make woocommerce set the account “username” as their e-mail?

    Thread Starter calimellow

    (@calimellow)

    I can also just customize the e-mail I guess.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘After latest update, something broke with automatically creating accounts’ is closed to new replies.