hook(); return self::$instance; } public function hook() { add_action('admin_menu', array($this, 'register_menu')); add_action('admin_post_wmf_save_global_settings', array($this, 'save_global_settings')); } public function register_menu() { $hook = add_submenu_page( 'wp-multi-formular', 'Integrationen', 'Integrationen', 'manage_options', 'wmf-integrations', array($this, 'page') ); if($hook) { add_action('load-' . $hook, array($this, 'on_load')); } } public function on_load() { // Metaboxen direkt hier registrieren (nicht ueber add_meta_boxes Hook) $this->register_metaboxes(); wp_enqueue_script('postbox'); wp_enqueue_style('wmf-int', WMF_URL . 'integrations/assets/css/admin.css', array(), WMF_VERSION); wp_enqueue_script('wmf-int', WMF_URL . 'integrations/assets/js/dashboard.js', array('jquery'), WMF_VERSION, true); wp_enqueue_style('wmf-admin', WMF_URL . 'assets/css/admin.css', array(), WMF_VERSION); } private function register_metaboxes() { $screen = get_current_screen(); if(!$screen) return; $sid = $screen->id; $int = wmf_get_integrations(); // Dienste nach Gruppe $groups = array( 'email' => 'normal', 'antispam' => 'side', 'address' => 'side', 'payments' => 'side', 'automation' => 'column3', 'analytics' => 'column4', ); foreach($groups as $group => $context) { $services = $int->get_service_group($group); foreach($services as $svc) { $id = 'wmf-int-widget-' . $svc->id; add_meta_box( $id, esc_html($svc->label), array($this, 'metabox_callback'), $sid, $context, 'default', array('service' => $svc) ); add_filter("postbox_classes_{$sid}_{$id}", function($classes) use($svc) { $classes[] = 'wmf-integrations-widget'; $classes[] = 'wmf-integrations-widget-group-' . $svc->group; return $classes; }); } } } public function metabox_callback($post, $metabox) { $metabox['args']['service']->admin_widget(); } /* ------------------------------------------------------------------ SEITEN-AUSGABE ------------------------------------------------------------------ */ public function page() { // Test-Mail if(!empty($_GET['wmf_test_mail']) && wp_verify_nonce($_GET['_wpnonce'] ?? '', 'wmf_test_mail')) { $this->handle_test_mail(); } $screen = get_current_screen(); $sid = $screen ? $screen->id : ''; require WMF_INT_DIR . 'templates/admin-integrations.php'; } /* ------------------------------------------------------------------ GLOBALE E-MAIL-EINSTELLUNGEN (als eigener Abschnitt, nicht als Meta-Box) ------------------------------------------------------------------ */ public function render_global_email_settings() { $opts = get_option('wmf_global_settings', array()); $from_name = $opts['from_name'] ?? get_bloginfo('name'); $from_email = $opts['from_email'] ?? get_option('admin_email'); $smtp_on = $opts['smtp_enabled'] ?? '0'; $smtp_host = $opts['smtp_host'] ?? ''; $smtp_port = $opts['smtp_port'] ?? '587'; $smtp_enc = $opts['smtp_enc'] ?? 'tls'; $smtp_user = $opts['smtp_user'] ?? ''; $smtp_pass = $opts['smtp_pass'] ?? ''; ?>

Globale E-Mail-Einstellungen

Standard-Absender

Gilt fuer alle Formulare. Im einzelnen Formular kann dies ueberschrieben werden.

Tipp: Nutzen Sie eine Adresse Ihrer Domain um Spam-Filter zu vermeiden.
z.B. noreply@viper-network.de

SMTP (optional)

Eigenen Mailserver verwenden statt WordPress-Standard (wp_mail).

587=TLS   465=SSL   25=keins

Bei Gmail: App-Passwort verwenden (kein normales Konto-Passwort).

sanitize_text_field($_POST['wmf_from_name'] ?? ''), 'from_email' => sanitize_email( $_POST['wmf_from_email'] ?? ''), 'smtp_enabled' => !empty($_POST['wmf_smtp_enabled']) ? '1' : '0', 'smtp_host' => sanitize_text_field($_POST['wmf_smtp_host'] ?? ''), 'smtp_port' => intval( $_POST['wmf_smtp_port'] ?? 587), 'smtp_enc' => sanitize_text_field($_POST['wmf_smtp_enc'] ?? 'tls'), 'smtp_user' => sanitize_text_field($_POST['wmf_smtp_user'] ?? ''), 'smtp_pass' => $_POST['wmf_smtp_pass'] ?? '', )); wmf_safe_redirect(add_query_arg(array('page'=>'wmf-integrations','wmf_notice'=>'global_saved'), admin_url('admin.php'))); } /* ------------------------------------------------------------------ TEST-MAIL ------------------------------------------------------------------ */ private function handle_test_mail() { $opts = get_option('wmf_global_settings', array()); $from_name = $opts['from_name'] ?? get_bloginfo('name'); $from_mail = $opts['from_email'] ?? get_option('admin_email'); $to = get_option('admin_email'); $headers = array('Content-Type: text/html; charset=UTF-8', 'From: '.$from_name.' <'.$from_mail.'>'); $body = '

WP Multi Formular – Test-E-Mail

Diese Test-E-Mail wurde erfolgreich gesendet.

Von:' . esc_html($from_name) . ' <' . esc_html($from_mail) . '>
An:' . esc_html($to) . '
Datum:' . current_time('d.m.Y H:i') . '
'; $sent = wp_mail($to, 'Test-E-Mail – WP Multi Formular', $body, $headers); $msg = $sent ? '

✓ Test-E-Mail gesendet an ' . esc_html($to) . '.

' : '

✗ Fehler beim Senden. Bitte SMTP-Einstellungen pruefen.

'; add_action('admin_notices', function() use($msg){ echo $msg; }); } } function wmf_get_integrations_page_controller() { return WMF_Integrations_Page_Controller::instance(); }