'array', 'sanitize_callback' => [$this, 'sanitize_settings'], ]); } public function sanitize_settings($input) { $sanitized = []; // Produkte sanitieren if (isset($input['products']) && is_array($input['products'])) { $sanitized['products'] = []; foreach ($input['products'] as $key => $product) { $sanitized['products'][sanitize_key($key)] = [ 'label' => sanitize_text_field($product['label'] ?? ''), 'description' => sanitize_textarea_field($product['description'] ?? ''), 'base_price' => floatval($product['base_price'] ?? 0), ]; } } // Preise sanitieren if (isset($input['prices']) && is_array($input['prices'])) { $sanitized['prices'] = []; foreach ($input['prices'] as $key => $value) { $sanitized['prices'][sanitize_key($key)] = floatval($value); } } // Dynamische Preisformeln sanitieren if (isset($input['dynamic_pricing'])) { $sanitized['dynamic_pricing'] = [ 'business_formula' => sanitize_textarea_field($input['dynamic_pricing']['business_formula'] ?? ''), 'private_formula' => sanitize_textarea_field($input['dynamic_pricing']['private_formula'] ?? ''), 'business_min_quantity' => intval($input['dynamic_pricing']['business_min_quantity'] ?? 0), 'private_min_quantity' => intval($input['dynamic_pricing']['private_min_quantity'] ?? 0), 'business_normal_quantity' => intval($input['dynamic_pricing']['business_normal_quantity'] ?? 0), 'private_normal_quantity' => intval($input['dynamic_pricing']['private_normal_quantity'] ?? 0), ]; } // Backend-Verbindung sanitieren if (isset($input['backend_connection'])) { $sanitized['backend_connection'] = [ 'api_url' => esc_url_raw($input['backend_connection']['api_url'] ?? ''), 'api_token' => sanitize_text_field($input['backend_connection']['api_token'] ?? ''), 'webhook_url_business' => esc_url_raw($input['backend_connection']['webhook_url_business'] ?? ''), 'webhook_url_private' => esc_url_raw($input['backend_connection']['webhook_url_private'] ?? ''), 'redirect_url_business' => esc_url_raw($input['backend_connection']['redirect_url_business'] ?? ''), 'redirect_url_private' => esc_url_raw($input['backend_connection']['redirect_url_private'] ?? ''), ]; } // REST API Key sanitieren if (isset($input['api_security'])) { $sanitized['api_security'] = [ 'api_key' => sanitize_text_field($input['api_security']['api_key'] ?? ''), ]; } // PayPal-Verbindung sanitieren if (isset($input['paypal'])) { $sanitized['paypal'] = [ 'enabled' => !empty($input['paypal']['enabled']), 'mode' => sanitize_text_field($input['paypal']['mode'] ?? 'sandbox'), 'client_id_sandbox' => sanitize_text_field($input['paypal']['client_id_sandbox'] ?? ''), 'client_secret_sandbox' => sanitize_text_field($input['paypal']['client_secret_sandbox'] ?? ''), 'client_id_live' => sanitize_text_field($input['paypal']['client_id_live'] ?? ''), 'client_secret_live' => sanitize_text_field($input['paypal']['client_secret_live'] ?? ''), ]; } // Schriftmuster und Platzhalter-Hilfe sanitieren if (isset($input['font_sample'])) { $sanitized['font_sample'] = [ 'url' => esc_url_raw($input['font_sample']['url'] ?? ''), 'placeholder_help_url' => esc_url_raw($input['font_sample']['placeholder_help_url'] ?? ''), ]; } return $sanitized; } public function render_settings_page(): void { if (!current_user_can('manage_options')) { return; } $settings = $this->get_settings(); ?>
Der Konfigurator unterstützt folgende URL-Parameter:
| Parameter | Werte | Beschreibung |
|---|---|---|
?businessbriefe?business-postkarten?follow-ups?einladungen?private-briefe |
– | Produkt direkt vorauswählen. Der Produktauswahlschritt wird übersprungen. |
quantity |
Zahl (z.B. 100) |
Menge vorausfüllen. |
format |
a4, a6h, a6q |
Format vorauswählen. a6h = A6 Hochformat, a6q = A6 Querformat. |
noPrice |
– | Preise im Konfigurator ausblenden. |
noLimits |
– | Keine Mindestmengen. Erlaubt Bestellungen ab 1 Stück. |
/konfigurator/?businessbriefe – Direkt zu Business Briefe/konfigurator/?einladungen&quantity=25&format=a6h – Einladungen mit 25 Stück im A6 Hochformat/konfigurator/?businessbriefe&noPrice – Business Briefe ohne Preisanzeige/konfigurator/?private-briefe&noLimits – Private Briefe ohne Mindestmenge/konfigurator/?business-postkarten&noLimits&noPrice – Postkarten ohne Mindestmenge und ohne Preise