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'] ?? ''; ?>
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') . ' |
✓ Test-E-Mail gesendet an ' . esc_html($to) . '.
✗ Fehler beim Senden. Bitte SMTP-Einstellungen pruefen.