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:
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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'])) {
|
||||||
|
|||||||
Reference in New Issue
Block a user