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:
@@ -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 = [];
|
||||
|
||||
@@ -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']));
|
||||
|
||||
Reference in New Issue
Block a user