feat: Move customer registration to site-level setting

Moved 'Register as site member' from order-level to site-level setting

Frontend Changes:
1. Customer Settings - Added new General section
   - Auto-register customers as site members toggle
   - Clear description of functionality
   - Saved to backend via existing API

2. OrderForm - Removed checkbox
   - Removed registerAsMember state
   - Removed checkbox UI
   - Removed register_as_member from payload
   - Backend now uses site setting

Backend Changes:
1. CustomerSettingsProvider.php
   - Added auto_register_members setting
   - Default: false (no)
   - Stored as woonoow_auto_register_members option
   - Included in get_settings()
   - Handled in update_settings()

2. OrdersController.php
   - Removed register_as_member parameter
   - Now reads from CustomerSettingsProvider
   - Site-level setting applies to all orders
   - Consistent behavior across all order creation

Benefits:
 Site-level control (not per-order)
 Consistent customer experience
 Easier to manage (one setting)
 No UI clutter in order form
 Setting persists across all orders

Migration:
- Old orders with checkbox: No impact
- New orders: Use site setting
- Default: Disabled (safe default)

Result:
Admins can now control customer registration site-wide from Customer Settings instead of per-order checkbox
This commit is contained in:
dwindown
2025-11-20 20:40:43 +07:00
parent e8ca3ceeb2
commit c8bba9a91b
4 changed files with 28 additions and 26 deletions

View File

@@ -18,6 +18,9 @@ class CustomerSettingsProvider {
*/
public static function get_settings() {
return [
// General
'auto_register_members' => get_option('woonoow_auto_register_members', 'no') === 'yes',
// VIP Customer Qualification
'vip_min_spent' => floatval(get_option('woonoow_vip_min_spent', 1000)),
'vip_min_orders' => intval(get_option('woonoow_vip_min_orders', 10)),
@@ -36,6 +39,11 @@ class CustomerSettingsProvider {
public static function update_settings($settings) {
$updated = true;
// General settings
if (isset($settings['auto_register_members'])) {
$updated = $updated && update_option('woonoow_auto_register_members', $settings['auto_register_members'] ? 'yes' : 'no');
}
// VIP settings
if (isset($settings['vip_min_spent'])) {
$updated = $updated && update_option('woonoow_vip_min_spent', floatval($settings['vip_min_spent']));