fix: multiple checkout and settings fixes

1. Remove wishlist setting from customer settings (now in module toggle)
   - Removed from CustomerSettingsProvider.php
   - Removed from Customers.tsx

2. Remove auto-login from REST API (causes cookie issues)
   - Auto-login in REST context doesn't properly set browser cookies
   - Removed wp_set_current_user/wp_set_auth_cookie calls

3. Fix cart not clearing after order
   - Added WC()->cart->empty_cart() after successful order
   - Server-side cart was not being cleared, causing re-population
   - Frontend clears local store but Cart page syncs with server
This commit is contained in:
Dwindi Ramadhana
2025-12-31 22:29:59 +07:00
parent f97cca8061
commit 3d7eb5bf48
3 changed files with 10 additions and 20 deletions

View File

@@ -13,7 +13,6 @@ import { formatMoney, getStoreCurrency } from '@/lib/currency';
interface CustomerSettings { interface CustomerSettings {
auto_register_members: boolean; auto_register_members: boolean;
multiple_addresses_enabled: boolean; multiple_addresses_enabled: boolean;
wishlist_enabled: boolean;
vip_min_spent: number; vip_min_spent: number;
vip_min_orders: number; vip_min_orders: number;
vip_timeframe: 'all' | '30' | '90' | '365'; vip_timeframe: 'all' | '30' | '90' | '365';
@@ -25,7 +24,6 @@ export default function CustomersSettings() {
const [settings, setSettings] = useState<CustomerSettings>({ const [settings, setSettings] = useState<CustomerSettings>({
auto_register_members: false, auto_register_members: false,
multiple_addresses_enabled: true, multiple_addresses_enabled: true,
wishlist_enabled: true,
vip_min_spent: 1000, vip_min_spent: 1000,
vip_min_orders: 10, vip_min_orders: 10,
vip_timeframe: 'all', vip_timeframe: 'all',
@@ -140,13 +138,7 @@ export default function CustomersSettings() {
onCheckedChange={(checked) => setSettings({ ...settings, multiple_addresses_enabled: checked })} onCheckedChange={(checked) => setSettings({ ...settings, multiple_addresses_enabled: checked })}
/> />
<ToggleField
id="wishlist_enabled"
label={__('Enable wishlist')}
description={__('Allow customers to save products to their wishlist for later purchase. Customers can add products to wishlist from product cards and manage them in their account.')}
checked={settings.wishlist_enabled}
onCheckedChange={(checked) => setSettings({ ...settings, wishlist_enabled: checked })}
/>
</div> </div>
</SettingsCard> </SettingsCard>

View File

@@ -313,10 +313,6 @@ class CheckoutController {
// Send new account email (WooCommerce will handle this automatically via hook) // Send new account email (WooCommerce will handle this automatically via hook)
do_action('woocommerce_created_customer', $new_user_id, $userdata, $password); do_action('woocommerce_created_customer', $new_user_id, $userdata, $password);
// Auto-login the newly registered user for smoother UX
wp_set_current_user($new_user_id);
wp_set_auth_cookie($new_user_id, true); // true = remember me
} }
} }
} }
@@ -398,6 +394,12 @@ class CheckoutController {
header('Server-Timing: app;dur=' . round((microtime(true) - $__t0) * 1000, 1)); header('Server-Timing: app;dur=' . round((microtime(true) - $__t0) * 1000, 1));
} }
// Clear WooCommerce cart after successful order placement
// This ensures the cart page won't re-populate from server session
if (function_exists('WC') && WC()->cart) {
WC()->cart->empty_cart();
}
return [ return [
'ok' => true, 'ok' => true,
'order_id' => $order->get_id(), 'order_id' => $order->get_id(),

View File

@@ -21,7 +21,6 @@ class CustomerSettingsProvider {
// General // General
'auto_register_members' => get_option('woonoow_auto_register_members', 'no') === 'yes', 'auto_register_members' => get_option('woonoow_auto_register_members', 'no') === 'yes',
'multiple_addresses_enabled' => get_option('woonoow_multiple_addresses_enabled', 'yes') === 'yes', 'multiple_addresses_enabled' => get_option('woonoow_multiple_addresses_enabled', 'yes') === 'yes',
'wishlist_enabled' => get_option('woonoow_wishlist_enabled', 'yes') === 'yes',
// VIP Customer Qualification // VIP Customer Qualification
'vip_min_spent' => floatval(get_option('woonoow_vip_min_spent', 1000)), 'vip_min_spent' => floatval(get_option('woonoow_vip_min_spent', 1000)),
@@ -50,10 +49,7 @@ class CustomerSettingsProvider {
update_option('woonoow_multiple_addresses_enabled', $value); update_option('woonoow_multiple_addresses_enabled', $value);
} }
if (array_key_exists('wishlist_enabled', $settings)) {
$value = !empty($settings['wishlist_enabled']) ? 'yes' : 'no';
update_option('woonoow_wishlist_enabled', $value);
}
// VIP settings // VIP settings
if (isset($settings['vip_min_spent'])) { if (isset($settings['vip_min_spent'])) {