// --- AUTO-CREATE USER + AUTO-LOGIN AFTER CHECKOUT (Final Clean Version) --- add_action('woocommerce_thankyou', 'klg_auto_create_and_login_user', 10, 1); function klg_auto_create_and_login_user($order_id) { if (!$order_id) return; $order = wc_get_order($order_id); if (!$order) return; $user_id = $order->get_user_id(); // Only run for true guest orders if (!$user_id) { $email = $order->get_billing_email(); $first = $order->get_billing_first_name() ?: 'Customer'; if (email_exists($email)) { $user_id = email_exists($email); } else { // Create clean account — username will be based on email $new_id = wc_create_new_customer($email, '', '', [ 'first_name' => $first, 'last_name' => $order->get_billing_last_name() ?: '', ]); if (is_wp_error($new_id)) { error_log('User creation failed for ' . $email . ': ' . $new_id->get_error_message()); return; } $user_id = $new_id; $user = new WP_User($user_id); $user->set_role('customer'); } // Attach order to user $order->set_customer_id($user_id); $order->save(); // === ONE CLEAN WELCOME EMAIL ONLY === $message = "Hi $first,\n\n"; $message .= "Thank you for your AlphaDeck purchase!\n\n"; $message .= "Your account has been created automatically.\n\n"; $message .= "Login email / Username: $email\n"; $message .= "Login here: " . wp_login_url() . "\n\n"; $message .= "Set your password here: " . wp_lostpassword_url() . "\n\n"; $message .= "You can now access the private member section and future updates.\n\n"; $message .= "Welcome to the team!\nKevin Lee Games"; wp_mail($email, 'Your Kevin Lee Games Account is Ready!', $message); } // Auto-login the user if ($user_id) { wc_set_customer_auth_cookie($user_id); } }