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

@@ -780,7 +780,10 @@ class OrdersController {
$shipping_method = sanitize_text_field( $p['shipping_method'] ?? '' ); // e.g. flat_rate:1
$coupons = array_filter( array_map( 'sanitize_text_field', (array) ( $p['coupons'] ?? [] ) ) );
$note = isset( $p['customer_note'] ) ? wp_kses_post( (string) $p['customer_note'] ) : '';
$register_member = (bool) ( $p['register_as_member'] ?? false );
// Get auto-register setting from customer settings (site-level)
$customer_settings = \WooNooW\Compat\CustomerSettingsProvider::get_settings();
$register_member = $customer_settings['auto_register_members'] ?? false;
// Validation: Collect all missing required fields
$validation_errors = [];