From 630f3cd3a4a2672e1b028638cd7ed36b119d9393 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Sun, 4 May 2025 11:05:59 +0000 Subject: [PATCH] wp-multi-toolkit.php aktualisiert --- wp-multi-toolkit.php | 1383 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 1123 insertions(+), 260 deletions(-) diff --git a/wp-multi-toolkit.php b/wp-multi-toolkit.php index c074eb4..e1e4974 100644 --- a/wp-multi-toolkit.php +++ b/wp-multi-toolkit.php @@ -3,7 +3,7 @@ * Plugin Name: WP Multi Toolkit * Plugin URI: https://git.viper.ipv64.net/M_Viper/wp-multi-toolkit * Description: Ein umfassendes Toolkit inklusive WP Multi Funktionen und Update-Management für zugehörige Plugins. - * Version: 1.0.7 + * Version: 1.0.8 * Author: M_Viper * Author URI: https://m-viper.de * Requires at least: 6.7.2 @@ -23,161 +23,358 @@ defined('ABSPATH') or die('No direct access allowed.'); * DB Backup */ -// Funktion zum Erstellen des Backups -function wpmt_create_database_backup() { - global $wpdb; + defined('ABSPATH') or die('No direct access allowed.'); - // Definiere den Dateinamen für das Backup - $backup_filename = 'wp-database-backup-' . date('Y-m-d_H-i-s') . '.sql'; - - // Spezifizieren des Speicherorts des Backups (im Uploads-Verzeichnis) - $upload_dir = wp_upload_dir(); - $backup_file_path = $upload_dir['basedir'] . '/wpmt_backups/' . $backup_filename; - - // Sicherstellen, dass der Backup-Ordner existiert - if (!file_exists($upload_dir['basedir'] . '/wpmt_backups')) { - wp_mkdir_p($upload_dir['basedir'] . '/wpmt_backups'); - } - - // Hole alle Tabellen der Datenbank - $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N); - if (empty($tables)) { - return new WP_Error('backup_error', 'Keine Tabellen in der Datenbank gefunden.'); - } - - // Öffne die Backup-Datei - $backup_file = fopen($backup_file_path, 'w'); - if (!$backup_file) { - return new WP_Error('backup_error', 'Fehler beim Öffnen der Backup-Datei.'); - } - - // Schreibe die SQL-Dumps für jede Tabelle - foreach ($tables as $table) { - $table_name = $table[0]; - - // SQL-Dump für die Tabelle hinzufügen - fwrite($backup_file, "DROP TABLE IF EXISTS `$table_name`;\n"); - - // Struktur der Tabelle - $create_table_query = $wpdb->get_row("SHOW CREATE TABLE $table_name", ARRAY_N); - fwrite($backup_file, $create_table_query[1] . ";\n\n"); - - // Daten der Tabelle - $rows = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A); - foreach ($rows as $row) { - $columns = array_map(function ($col) use ($wpdb) { - return $wpdb->prepare('%s', $col); - }, array_values($row)); - - $columns_str = implode(", ", $columns); - fwrite($backup_file, "INSERT INTO `$table_name` VALUES ($columns_str);\n"); - } - - fwrite($backup_file, "\n\n"); - } - - // Datei schließen - fclose($backup_file); - - // Gebe den Pfad zur herunterladbaren Datei zurück - return $backup_file_path; -} - -// Neue Funktion zum Löschen von Backups -function wpmt_delete_backup() { - if (isset($_POST['wpmt_action']) && $_POST['wpmt_action'] == 'delete_backup' && isset($_POST['backup_file'])) { - $upload_dir = wp_upload_dir(); - $backup_file = $upload_dir['basedir'] . '/wpmt_backups/' . sanitize_file_name($_POST['backup_file']); - - if (file_exists($backup_file)) { - unlink($backup_file); - echo '

' . __('Backup erfolgreich gelöscht!', 'wp-multi-toolkit') . '

'; - } else { - echo '

' . __('Backup-Datei nicht gefunden.', 'wp-multi-toolkit') . '

'; - } - } -} - -// Funktion zur Anzeige der Backup-Seite und der Liste der Backups im Admin-Bereich -function wpmt_display_backup_page() { - $upload_dir = wp_upload_dir(); - $backup_dir = $upload_dir['basedir'] . '/wpmt_backups'; - - // Hole eine Liste der Backups - $backups = glob($backup_dir . '/*.sql'); - - ?> -
-

- - -
- -

-
- - -

- - - - - - - - - - - - - - - -
- -
- - - -
-
- -

- -
-

' . $backup_path->get_error_message() . '

'; - } else { - echo '

' . __('Datenbank-Backup erfolgreich erstellt!', 'wp-multi-toolkit') . '

'; - } - } -} - -// Admin-Menüpunkt unter Tools/Werkzeuge hinzufügen -function wpmt_add_backup_menu() { - add_submenu_page( - 'tools.php', - 'WP-Multi DB-Backup', - 'WP-Multi DB-Backup', - 'manage_options', - 'wpmt-database-backup', - 'wpmt_display_backup_page' - ); -} -add_action('admin_menu', 'wpmt_add_backup_menu'); - -// Sicherstellen, dass die Anfrage bearbeitet wird -add_action('admin_init', 'wpmt_handle_backup_request'); + // Konstanten für wiederkehrende Pfade + define('WPMT_BACKUP_DIR', wp_upload_dir()['basedir'] . '/wpmt_backups/'); + define('WPMT_BACKUP_URL', wp_upload_dir()['baseurl'] . '/wpmt_backups/'); + + /** + * Erstellt ein Backup der WordPress-Datenbank und speichert es als SQL-Datei. + * + * @return string|WP_Error Der Pfad zur Backup-Datei oder ein WP_Error-Objekt bei Fehlern. + */ + function wpmt_create_database_backup() { + global $wpdb; + + // Dateinamen für das Backup definieren + $backup_filename = 'wp-database-backup-' . date('Y-m-d_H-i-s') . '.sql'; + $backup_file_path = WPMT_BACKUP_DIR . $backup_filename; + + // Sicherstellen, dass der Backup-Ordner existiert und beschreibbar ist + if (!is_writable(wp_upload_dir()['basedir'])) { + return new WP_Error('backup_error', __('Upload-Verzeichnis ist nicht beschreibbar.', 'wp-multi-toolkit')); + } + + if (!file_exists(WPMT_BACKUP_DIR)) { + if (!wp_mkdir_p(WPMT_BACKUP_DIR)) { + return new WP_Error('backup_error', __('Backup-Ordner konnte nicht erstellt werden.', 'wp-multi-toolkit')); + } + } + + // Hole alle Tabellen der Datenbank + $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N); + if (empty($tables)) { + return new WP_Error('backup_error', __('Keine Tabellen in der Datenbank gefunden.', 'wp-multi-toolkit')); + } + + // Öffne die Backup-Datei + $backup_file = fopen($backup_file_path, 'w'); + if (!$backup_file) { + return new WP_Error('backup_error', __('Backup-Datei konnte nicht geöffnet werden.', 'wp-multi-toolkit')); + } + + // Schreibe die SQL-Dumps für jede Tabelle + foreach ($tables as $table) { + $table_name = $table[0]; + + // SQL-Dump für die Tabelle hinzufügen + fwrite($backup_file, "DROP TABLE IF EXISTS `$table_name`;\n"); + + // Struktur der Tabelle (mit SQL-Injection-Schutz) + $create_table_query = $wpdb->get_row($wpdb->prepare('SHOW CREATE TABLE %s', $table_name), ARRAY_N); + if ($create_table_query) { + fwrite($backup_file, $create_table_query[1] . ";\n\n"); + } + + // Daten der Tabelle in Batches holen (Performance-Optimierung) + $offset = 0; + $batch_size = 1000; + while ($rows = $wpdb->get_results($wpdb->prepare("SELECT * FROM `$table_name` LIMIT %d, %d", $offset, $batch_size), ARRAY_A)) { + foreach ($rows as $row) { + $columns = array_map(function ($col) use ($wpdb) { + return $wpdb->prepare('%s', $col); + }, array_values($row)); + $columns_str = implode(", ", $columns); + fwrite($backup_file, "INSERT INTO `$table_name` VALUES ($columns_str);\n"); + } + $offset += $batch_size; + } + + fwrite($backup_file, "\n\n"); + } + + // Datei schließen + fclose($backup_file); + + return $backup_file_path; + } + + /** + * Löscht ein Backup aus dem Backup-Verzeichnis. + */ + function wpmt_delete_backup() { + if (isset($_POST['wpmt_action']) && $_POST['wpmt_action'] === 'delete_backup' && isset($_POST['backup_file']) && check_admin_referer('wpmt_delete_backup_nonce')) { + $backup_file = WPMT_BACKUP_DIR . sanitize_file_name($_POST['backup_file']); + + if (file_exists($backup_file)) { + unlink($backup_file); + echo '

' . __('Backup erfolgreich gelöscht!', 'wp-multi-toolkit') . '

'; + } else { + echo '

' . __('Backup-Datei nicht gefunden.', 'wp-multi-toolkit') . '

'; + } + } + } + + /** + * Plant automatische Backups via Cron-Job. + */ + function wpmt_schedule_backup() { + $schedule = get_option('wpmt_backup_schedule', 'none'); + $hook = 'wpmt_scheduled_backup'; + + // Entferne bestehende Cron-Jobs, um Duplikate zu vermeiden + wp_clear_scheduled_hook($hook); + + // Plane neuen Cron-Job, wenn aktiviert + if ($schedule !== 'none' && !wp_next_scheduled($hook)) { + wp_schedule_event(time(), $schedule, $hook); + } + } + add_action('wp', 'wpmt_schedule_backup'); + + /** + * Führt das geplante Backup aus und sendet optional eine E-Mail-Benachrichtigung. + */ + function wpmt_create_scheduled_backup() { + $backup_path = wpmt_create_database_backup(); + if (!is_wp_error($backup_path)) { + // Sende E-Mail-Benachrichtigung, wenn aktiviert + $send_email = get_option('wpmt_backup_email_notification', 0); + if ($send_email) { + $admin_email = get_option('admin_email'); + $subject = __('Datenbank-Backup erstellt', 'wp-multi-toolkit'); + $message = __('Ein neues Backup wurde erstellt: ', 'wp-multi-toolkit') . $backup_path; + wp_mail($admin_email, $subject, $message); + } + } else { + // Optional: Fehler in Log schreiben + error_log('WP Multi Toolkit: Geplantes Backup fehlgeschlagen: ' . $backup_path->get_error_message()); + } + } + add_action('wpmt_scheduled_backup', 'wpmt_create_scheduled_backup'); + + /** + * Exportiert die Backup-Einstellungen als JSON-Datei. + */ + function wpmt_export_backup_settings() { + if (isset($_POST['wpmt_export_backup_settings']) && check_admin_referer('wpmt_export_backup_settings')) { + $settings = array( + 'wpmt_backup_schedule' => get_option('wpmt_backup_schedule', 'none'), + 'wpmt_backup_email_notification' => get_option('wpmt_backup_email_notification', 0), + ); + header('Content-Type: application/json'); + header('Content-Disposition: attachment; filename="wpmt_backup_settings.json"'); + echo json_encode($settings, JSON_PRETTY_PRINT); + exit; + } + } + add_action('admin_init', 'wpmt_export_backup_settings'); + + /** + * Importiert Backup-Einstellungen aus einer JSON-Datei. + */ + function wpmt_import_backup_settings() { + if (isset($_POST['wpmt_import_backup_settings']) && check_admin_referer('wpmt_import_backup_settings') && isset($_FILES['wpmt_backup_settings_file'])) { + $file = $_FILES['wpmt_backup_settings_file']['tmp_name']; + $settings = json_decode(file_get_contents($file), true); + + if (is_array($settings)) { + $valid_schedules = array('none', 'hourly', 'twicedaily', 'daily', 'weekly'); + update_option('wpmt_backup_schedule', in_array($settings['wpmt_backup_schedule'], $valid_schedules) ? $settings['wpmt_backup_schedule'] : 'none'); + update_option('wpmt_backup_email_notification', isset($settings['wpmt_backup_email_notification']) ? (int) $settings['wpmt_backup_email_notification'] : 0); + echo '

' . __('Einstellungen erfolgreich importiert!', 'wp-multi-toolkit') . '

'; + + // Cron-Job aktualisieren + wpmt_schedule_backup(); + } else { + echo '

' . __('Ungültige Datei.', 'wp-multi-toolkit') . '

'; + } + } + } + add_action('admin_init', 'wpmt_import_backup_settings'); + + /** + * Anzeige der Backup-Seite mit Liste der Backups und Verlinkung zur Einstellungsseite. + */ + function wpmt_display_backup_page() { + $backup_dir = WPMT_BACKUP_DIR; + $backups = glob($backup_dir . '/*.sql'); + + ?> +
+

+

+ +
+ + +

+
+ + +

+ + + + + + + + + + + + + + + +
+ +
+ + + + +
+
+ +

+ +
+ +
+

+
+ +
+ +

+
+ + +

+
+
+ + +

+

+
+
+ function($value) { + $valid_schedules = array('none', 'hourly', 'twicedaily', 'daily', 'weekly'); + return in_array($value, $valid_schedules) ? $value : 'none'; + } + )); + register_setting('wpmt_backup_settings', 'wpmt_backup_email_notification', array( + 'sanitize_callback' => 'absint' + )); + + add_settings_section( + 'wpmt_backup_main_section', + __('Automatische Backup-Einstellungen', 'wp-multi-toolkit'), + function() { + echo '

' . __('Konfigurieren Sie automatische Backups und Benachrichtigungen.', 'wp-multi-toolkit') . '

'; + }, + 'wpmt_backup_settings' + ); + + add_settings_field( + 'wpmt_backup_schedule', + __('Backup-Zeitplan', 'wp-multi-toolkit'), + function() { + $schedule = get_option('wpmt_backup_schedule', 'none'); + ?> + + + > + +

' . esc_html($backup_path->get_error_message()) . '

'; + } else { + echo '

' . __('Datenbank-Backup erfolgreich erstellt!', 'wp-multi-toolkit') . '

'; + } + } + } + add_action('admin_init', 'wpmt_handle_backup_request'); + + /** + * Fügt die Backup-Menüpunkte zum Admin-Menü hinzu. + */ + function wpmt_add_backup_menu() { + add_submenu_page( + 'tools.php', + __('WP-Multi DB-Backup', 'wp-multi-toolkit'), + __('WP-Multi DB-Backup', 'wp-multi-toolkit'), + 'manage_options', + 'wpmt-database-backup', + 'wpmt_display_backup_page' + ); + + add_submenu_page( + 'tools.php', + __('WP-Multi Backup-Einstellungen', 'wp-multi-toolkit'), + __('Backup-Einstellungen', 'wp-multi-toolkit'), + 'manage_options', + 'wpmt-backup-settings', + 'wpmt_display_backup_settings_page' + ); + } + add_action('admin_menu', 'wpmt_add_backup_menu'); /* @@ -802,123 +999,574 @@ add_action('admin_menu', 'add_support_ticket_page'); * Virtueller Assistent als Submenü */ +defined('ABSPATH') or die('No direct access allowed.'); +/** + * Anzeige der virtuellen Assistenten-Seite + */ function wpmt_virtual_assistant_page() { if (!current_user_can('manage_options')) { wp_die(__('Du hast nicht die Berechtigung, auf diese Seite zuzugreifen.', 'wp-multi-toolkit')); } + $current_user = wp_get_current_user(); + $user_name = $current_user->display_name ?: __('Freund', 'wp-multi-toolkit'); + $assistant_responses = apply_filters('wpmt_assistant_responses', array( - 'default' => __('Entschuldigung, das verstehe ich nicht. Versuche es mit einer anderen Frage oder erstelle ein Support-Ticket unter WP-Multi Support!', 'wp-multi-toolkit') + 'default' => sprintf( + __('Ups, das habe ich nicht ganz verstanden, %s! 😅 Versuche es mit einer anderen Formulierung oder schau in die Dokumentation. Alternativ kannst du ein Support-Ticket erstellen, und wir helfen dir weiter!', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs'), + admin_url('admin.php?page=wp_multi_support') + ) )); - // Stichwörter aus den Antworten extrahieren (ohne 'default') + // Stichwörter für Autovervollständigung und Anzeige $keywords = array_keys($assistant_responses); - unset($keywords[array_search('default', $keywords)]); // Entfernt 'default' aus der Liste - $keywords_list = implode(', ', $keywords); + unset($keywords[array_search('default', $keywords)]); + $keywords_list = implode(', ', array_map(function($key) { + return ucfirst(str_replace('-', ' ', $key)); + }, $keywords)); ?>

-
- <?php _e('Virtueller Assistent', 'wp-multi-toolkit'); ?> -

- - -
+
+
+ <?php _e('Virtueller Assistent', 'wp-multi-toolkit'); ?> +

+

+
+
+
+
+
+ + + +
-
-

-

+
+

+

+ + $synonyms) { + foreach ($synonyms as $synonym) { + $distance = levenshtein($input, wpmt_normalize_text($synonym)); + if ($distance < $min_distance && $distance <= $max_distance) { + $min_distance = $distance; + $best_match = $key; + } + } + } + return $best_match; +} + +/** + * AJAX-Handler für Assistenten-Anfragen + */ +function wpmt_assistant_query() { + check_ajax_referer('wpmt_assistant_nonce', 'nonce'); + + $question = isset($_POST['question']) ? sanitize_text_field($_POST['question']) : ''; + $last_question = isset($_POST['last_question']) ? sanitize_text_field($_POST['last_question']) : ''; + $selected_keyword = isset($_POST['selected_keyword']) ? sanitize_text_field($_POST['selected_keyword']) : ''; + + if (empty($question)) { + wp_send_json_error(__('Bitte gib eine Frage ein, um weiterzumachen!', 'wp-multi-toolkit')); + } + + $current_user = wp_get_current_user(); + $user_name = $current_user->display_name ?: __('Freund', 'wp-multi-toolkit'); + + $responses = apply_filters('wpmt_assistant_responses', array( + 'default' => sprintf( + __('Ups, das habe ich nicht ganz verstanden, %s! 😅 Versuche es mit einer anderen Formulierung oder schau in die Dokumentation. Alternativ kannst du ein Support-Ticket erstellen, und wir helfen dir weiter!', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs'), + admin_url('admin.php?page=wp_multi_support') + ) + )); + + $keyword_synonyms = apply_filters('wpmt_assistant_keyword_synonyms', array( + 'statistik' => ['statistik', 'statistiken', 'stats', 'daten', 'bericht'], + 'telegram' => ['telegram', 'telegarm', 'tg', 'tele', 'benachrichtigung telegram'], + 'discord' => ['discord', 'discrod', 'dc', 'discord benachrichtigung'], + 'admin links' => ['admin links', 'admin-links', 'adminlinks', 'links', 'menü links'], + 'gast-autor' => ['gast-autor', 'gastautor', 'guest author', 'gast', 'autor'], + 'beitrag report' => ['beitrag report', 'beitrag-report', 'report', 'melden', 'gemeldete beiträge'], + 'textbox' => ['textbox', 'text-box', 'textfeld', 'text am beitrag'], + 'banner' => ['banner', 'werbung', 'anzeige', 'header banner', 'footer banner'], + 'inhaltsverzeichnis' => ['inhaltsverzeichnis', 'inhalt', 'index', 'verzeichnis', 'alphabetische liste'], + 'lesezeichen' => ['lesezeichen', 'bookmark', 'favoriten', 'speichern', 'merken'], + 'custom shortcode' => ['custom shortcode', 'shortcode', 'eigener shortcode', 'shortcodes'], + 'kommentar sperren' => ['kommentar sperren', 'kommentarsperre', 'blockieren', 'sperren', 'nutzer blockieren'], + 'filter' => ['filter', 'kommentarfilter', 'filtern', 'kommentare filtern'], + 'analytics' => ['analytics', 'analyse', 'benutzer analytics', 'datenanalyse'], + 'pinwand' => ['pinwand', 'notiz', 'pinnwand', 'team notizen'], + 'brute force' => ['brute force', 'bruteforce', 'sicherheit', 'login schutz'], + 'anti spam' => ['anti spam', 'antispam', 'spam', 'spam schutz'], + 'auto tag' => ['auto tag', 'autotag', 'tags', 'automatische tags'], + 'login deaktivieren' => ['login deaktivieren', 'login-deaktivieren', 'login', 'zugang sperren'], + 'text copy' => ['text copy', 'text-copy', 'kopierschutz', 'rechtsklick sperre'], + 'trash mail' => ['trash mail', 'trash-mail', 'spam mail', 'wegwerf email'], + 'kommentar benachrichtigung' => ['kommentar benachrichtigung', 'kommentar-benachrichtigung', 'benachrichtigung', 'comment', 'kommentar alarm'], + 'kategorien ausblenden' => ['kategorien ausblenden', 'kategorie-ausblenden', 'kategorien', 'ausblenden', 'kategorie filter'], + 'suchfunktion' => ['suchfunktion', 'suche', 'search', 'wp multi search'], + 'teamcard' => ['teamcard', 'team-card', 'teamkarte', 'team', 'teamkarten'], + 'teammitglied hinzufügen' => ['teammitglied hinzufügen', 'teammitglied-hinzufügen', 'mitglied', 'hinzufügen', 'teammitglied'], + 'teamcard shortcode' => ['teamcard shortcode', 'teamcard-shortcode', 'shortcode', 'teamkarten shortcode'], + 'teamcard kategorie' => ['teamcard kategorie', 'teamcard-kategorie', 'kategorie', 'team kategorie'], + 'teamcard bild' => ['teamcard bild', 'teamcard-bild', 'bild', 'team foto'], + 'teamcard löschen' => ['teamcard löschen', 'teamcard-löschen', 'löschen', 'teammitglied entfernen'], + 'teamcard reihenfolge' => ['teamcard reihenfolge', 'teamcard-reihenfolge', 'reihenfolge', 'team sortieren'], + 'teamcard deinstallation' => ['teamcard deinstallation', 'teamcard-deinstallation', 'deinstallieren', 'teamcard entfernen'], + 'teamcard updates' => ['teamcard updates', 'teamcard-updates', 'updates', 'teamcard aktualisierung'], + 'update management' => ['update management', 'update-management', 'updates', 'plugin updates'], + 'support issues' => ['support issues', 'support-issues', 'support', 'ticket', 'hilfe'], + 'dokumentation' => ['dokumentation', 'doku', 'docs', 'anleitung', 'dokumentaton'], + 'virtueller assistent' => ['virtueller assistent', 'assistent', 'virtuell', 'chatbot'], + 'toolbar' => ['toolbar', 'werkzeugleiste', 'schnellstart', 'quickbar'], + 'wp multi plugins' => ['wp multi plugins', 'wp-multi-plugins', 'plugins', 'wp multi'], + 'was sind wp multi plugins' => ['was sind wp multi plugins', 'wp multi plugins', 'plugins', 'wp multi erklärung'], + 'wie installiere ich ein plugin' => ['wie installiere ich ein plugin', 'plugin installieren', 'installation', 'plugin setup', 'install plugin'], + 'wo finde ich updates' => ['wo finde ich updates', 'updates finden', 'aktualisierungen', 'plugin updates', 'update suchen'], + 'wie erstelle ich ein support ticket' => ['wie erstelle ich ein support ticket', 'support ticket', 'ticket', 'support anfrage', 'ticket erstellen'], + 'welche voraussetzungen gibt es' => ['welche voraussetzungen gibt es', 'voraussetzungen', 'anforderungen', 'systemanforderungen', 'plugin voraussetzungen'], + 'sind die plugins kostenlos' => ['sind die plugins kostenlos', 'kostenlos', 'gratis', 'plugin kosten', 'free plugins'], + 'wie deaktiviere ich ein plugin' => ['wie deaktiviere ich ein plugin', 'plugin deaktivieren', 'deaktivieren', 'plugin ausschalten', 'disable plugin'], + 'wo finde ich die dokumentation' => ['wo finde ich die dokumentation', 'dokumentation finden', 'doku', 'anleitung finden', 'doku suchen'], + 'wer entwickelt die plugins' => ['wer entwickelt die plugins', 'entwickler', 'm_viper', 'plugin entwickler', 'wer macht plugins'], + 'kann ich eigene funktionen hinzufügen' => ['kann ich eigene funktionen hinzufügen', 'eigene funktionen', 'anpassen', 'erweitern', 'custom functions'], + 'wie richte ich wp multi ein' => ['wie richte ich wp multi ein', 'wp multi einrichten', 'setup wp multi', 'installation wp multi', 'wp multi installieren'], + 'was ist wordpress' => ['was ist wordpress', 'wordpress', 'wordpress erklärung', 'cms wordpress', 'wordpress info'], + 'wie sichere ich meine website' => ['wie sichere ich meine website', 'website sichern', 'sicherheit', 'backup', 'sichere website'], + 'wie verbessere ich die performance' => ['wie verbessere ich die performance', 'performance', 'geschwindigkeit', 'optimierung', 'website schneller'], + 'wie kontaktiere ich den support' => ['wie kontaktiere ich den support', 'support kontakt', 'hilfe kontakt', 'support team', 'support anfragen'], + 'welche plugins sind kompatibel' => ['welche plugins sind kompatibel', 'kompatibilität', 'plugin kompatibel', 'kompatible plugins', 'plugin kompatibilität'], + 'wie teste ich ein plugin' => ['wie teste ich ein plugin', 'plugin testen', 'test plugin', 'plugin ausprobieren', 'plugin prüfen'] + )); + + $normalized_question = wpmt_normalize_text($question); + $response = $responses['default']; + $matched_keywords = []; + + // Wenn ein spezifisches Stichwort ausgewählt wurde + if ($selected_keyword && isset($responses[$selected_keyword])) { + $response = $responses[$selected_keyword]; + } else { + // Suche nach allen passenden Stichwörtern + foreach ($keyword_synonyms as $key => $synonyms) { + if ($key === 'default') continue; + foreach ($synonyms as $synonym) { + if (strpos($normalized_question, wpmt_normalize_text($synonym)) !== false) { + $matched_keywords[] = $key; + break; + } + } + } + + // Falls kein Treffer, suche nach Tippfehlern + if (empty($matched_keywords)) { + $matched_keyword = wpmt_levenshtein_match($normalized_question, $keyword_synonyms); + if ($matched_keyword && isset($responses[$matched_keyword])) { + $matched_keywords[] = $matched_keyword; + } + } + + // Wenn genau ein Stichwort gefunden wurde + if (count($matched_keywords) === 1) { + $response = $responses[$matched_keywords[0]]; + if ($matched_keywords[0] === $matched_keyword) { + $response = sprintf( + __('Meintest du vielleicht „%s“, %s? Hier ist die Antwort: ', 'wp-multi-toolkit'), + esc_html(str_replace('-', ' ', $matched_keywords[0])), + esc_html($user_name) + ) . $response; + } + } + // Wenn mehrere Stichwörter gefunden wurden + elseif (count($matched_keywords) > 1) { + $response = sprintf( + __('Mehrere Themen passen zu deiner Frage, %s! 😊 Wähle eines aus: ', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $response .= '
'; + foreach ($matched_keywords as $key) { + $response .= sprintf( + '%s', + esc_attr($key), + esc_html(ucfirst(str_replace('-', ' ', $key))) + ); + } + $response .= '
'; + } + // Wenn kein Treffer, Vorschläge machen + else { + $suggestions = []; + $words = explode(' ', $normalized_question); + foreach ($words as $word) { + foreach ($keyword_synonyms as $key => $synonyms) { + foreach ($synonyms as $synonym) { + if (levenshtein($word, wpmt_normalize_text($synonym)) <= 4 && !in_array($key, $suggestions)) { + $suggestions[] = $key; + } + } + } + } + if (!empty($suggestions)) { + $response .= sprintf( + __('Keine direkte Antwort gefunden, %s. 🙁 Vielleicht passen diese Themen: %s.', 'wp-multi-toolkit'), + esc_html($user_name), + implode(', ', array_map(function($key) { return ucfirst(str_replace('-', ' ', $key)); }, $suggestions)) + ); + } + } + } + + // Antwort mit Bewertungsoptionen + $allowed_html = array( + 'a' => array('href' => true, 'class' => true, 'data-keyword' => true), + 'code' => array(), + 'strong' => array(), + 'div' => array('class' => true), + 'ul' => array(), + 'li' => array() + ); + $formatted_response = wp_kses($response, $allowed_html) . '
'; + $formatted_response .= '' . __('Hilfreich', 'wp-multi-toolkit') . ''; + $formatted_response .= '' . __('Nicht hilfreich', 'wp-multi-toolkit') . ''; + $formatted_response .= '
'; + + wp_send_json_success(array('response' => $formatted_response)); +} +add_action('wp_ajax_wpmt_assistant_query', 'wpmt_assistant_query'); + +/** + * AJAX-Handler für Feedback + */ +function wpmt_assistant_feedback() { + check_ajax_referer('wpmt_assistant_nonce', 'nonce'); + + $message = isset($_POST['message']) ? wp_kses_post($_POST['message']) : ''; + $rating = isset($_POST['rating']) ? sanitize_text_field($_POST['rating']) : ''; + + $feedback_log = get_option('wpmt_assistant_feedback', array()); + $feedback_log[] = array( + 'message' => $message, + 'rating' => $rating, + 'timestamp' => current_time('mysql') + ); + update_option('wpmt_assistant_feedback', $feedback_log); + + wp_send_json_success(); +} +add_action('wp_ajax_wpmt_assistant_feedback', 'wpmt_assistant_feedback'); + +/** + * Registriert die Assistenten-Seite im Admin-Menü + */ function wpmt_add_assistant_page() { add_submenu_page( 'wp_multi_support', @@ -931,79 +1579,294 @@ function wpmt_add_assistant_page() { } add_action('admin_menu', 'wpmt_add_assistant_page'); - -/* +/** * Antworten vordefinieren */ - - add_filter('wpmt_assistant_responses', function($responses) { + $current_user = wp_get_current_user(); + $user_name = $current_user->display_name ?: __('Freund', 'wp-multi-toolkit'); + // WP Multi - $responses['statistik'] = __('Nutze den Shortcode [statistik_manager] oder gehe zu "WP Stat & Notice", um Statistiken wie Beitragsanzahl, Kommentare, Kategorien und Serien anzuzeigen.', 'wp-multi-toolkit'); - $responses['telegram'] = __('Schickt Benachrichtigungen für neue Beiträge an Telegram. Konfiguriere dies unter "Notify > TG-Notify".', 'wp-multi-toolkit'); - $responses['discord'] = __('Schickt Benachrichtigungen für neue Beiträge an Discord. Konfiguriere dies unter "Notify > DC-Notify".', 'wp-multi-toolkit'); - $responses['admin links'] = __('Füge eigene Links (z. B. zu externen Seiten) im Adminpanel hinzu. Gehe zu "Werkzeuge > Admin-Link hinzufügen".', 'wp-multi-toolkit'); - $responses['gast-autor'] = __('Gib Gastautoren unter "Benutzer > Gastautor (Übersicht)" ein. Sie werden in jedem Beitrag im Frontend angezeigt.', 'wp-multi-toolkit'); - $responses['beitrag report'] = __('Unangemessene Beiträge melden und bearbeiten. Sieh die Liste unter "Gemeldete Beiträge".', 'wp-multi-toolkit'); - $responses['textbox'] = __('Fügt eine Textbox mit vordefinierten Texten am Beitragsende hinzu. Texte können im Adminpanel hinterlegt werden.', 'wp-multi-toolkit'); - $responses['banner'] = __('Stelle ein Informationsbanner unter "WP Stat & Notice" ein (Header oder Footer).', 'wp-multi-toolkit'); - $responses['inhaltsverzeichnis'] = __('Nutze den Shortcode [alphabetical_index], um ein Inhaltsverzeichnis aller Beiträge zu erstellen.', 'wp-multi-toolkit'); - $responses['lesezeichen'] = __('Gäste können Lesezeichen mit [add_bookmark] setzen und mit [display_bookmarks] anzeigen. Per Cookie gespeichert.', 'wp-multi-toolkit'); - $responses['custom shortcode'] = __('Erstelle eigene Shortcodes und wähle sie unter "Beitrag erstellen" im Editor aus.', 'wp-multi-toolkit'); - $responses['kommentar sperren'] = __('Sperre Benutzer für Kommentare unter "Benutzer sperren" (z. B. via Benutzername, IP, Mail).', 'wp-multi-toolkit'); - $responses['filter'] = __('Verbiete Rufnummern, Mailadressen, URLs, IPs oder Schimpfwörter unter "Kommentare > Kommentar Filter". Verstöße werden mit * ersetzt.', 'wp-multi-toolkit'); - $responses['analytics'] = __('Sieh die beliebtesten Beiträge (Views, Kommentare, Titel, ID, Zeitstempel) unter "Benutzer > Benutzer Analytics".', 'wp-multi-toolkit'); - $responses['pinwand'] = __('Hinterlege Nachrichten für Backend-Nutzer unter "Pinnwand". Diese können erstellt, bearbeitet oder gelöscht werden.', 'wp-multi-toolkit'); - $responses['brute force'] = __('Schutz vor Brute-Force: Loggt Fehlversuche und sperrt nach 5 Versuchen. Einstellungen unter "Sicherheit".', 'wp-multi-toolkit'); - $responses['anti spam'] = __('Blockiert Spam und Bots. Konfiguriere dies unter "Sicherheit" mit Übersicht im Adminpanel.', 'wp-multi-toolkit'); - $responses['auto tag'] = __('Fügt fehlende Tags automatisch hinzu. Verwalte verbotene Wörter unter "Beiträge > Automatische Tags".', 'wp-multi-toolkit'); - $responses['login deaktivieren'] = __('Deaktiviere Logins im Profil unter "Benutzer > Alle Benutzer > Benutzer auswählen".', 'wp-multi-toolkit'); - $responses['text copy'] = __('Schützt Texte vor Kopieren (Rechtsklick-Sperre). Aktiviere dies in den WP Multi-Einstellungen.', 'wp-multi-toolkit'); - $responses['trash mail'] = __('Verbietet Trash-Mail-Adressen in Kommentaren. Die Liste wird vom Entwickler gepflegt.', 'wp-multi-toolkit'); + $responses['statistik'] = sprintf( + __('Hey %s, willst du die Statistiken deiner Website im Blick haben? 📊 Füge den Shortcode [statistik_manager] in einen Beitrag oder eine Seite ein, um sie anzuzeigen. Oder gehe zu WP Stat & Notice, um Details wie Beitragsanzahl, Kommentare oder Kategorien zu sehen. Tipp: Aktiviere Benachrichtigungen für wichtige Updates! Bereit, deine Daten zu checken? 😎', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['telegram'] = sprintf( + __('Telegram-Benachrichtigungen einrichten, %s? Super einfach! 🔔 Gehe zu Notify > TG-Notify, erstelle einen Bot über BotFather und folge den Schritten, um ihn zu konfigurieren. Neue Beiträge oder Kommentare landen direkt in deinem Chat. Jetzt einrichten. Tipp: Teste den Bot mit einer Probemitteilung! Alles klar? 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=tg-notify') + ); + $responses['discord'] = sprintf( + __('Discord-Benachrichtigungen für deine Community, %s? 😄 Gehe zu Notify > DC-Notify, erstelle einen Webhook in deinem Discord-Server und füge ihn in den Einstellungen ein. Neue Beiträge werden automatisch gepostet. Los geht’s! Tipp: Nutze einen separaten Kanal für Benachrichtigungen! Bereit? 🌟', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wp-multi') + ); + $responses['admin links'] = sprintf( + __('Eigene Admin-Links hinzufügen, %s? Perfekt für schnellen Zugriff! 🔧 Gehe zu Werkzeuge > Admin-Link hinzufügen, gib Namen und URL ein (z. B. für externe Tools) und speichere. Deine Links erscheinen im Admin-Menü. Tipp: Gruppiere Links für bessere Übersicht! Alles organisiert? 😊', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['gast-autor'] = sprintf( + __('Gastautoren auf deiner Seite, %s? 😊 Gehe zu Benutzer > Gastautor (Übersicht), füge Autoren hinzu und weise ihnen Beiträge zu. Ihre Namen erscheinen automatisch im Frontend. Tipp: Füge eine kurze Bio hinzu, um sie vorzustellen! Einfach, oder? ✨', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['beitrag report'] = sprintf( + __('Probleme mit Beiträgen, %s? 🧹 Unter Gemeldete Beiträge kannst du unangemessene Inhalte prüfen, bearbeiten oder löschen. So bleibt deine Seite sauber! Brauchst du Hilfe? Erstelle ein Support-Ticket. Alles unter Kontrolle? 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wp_multi_support') + ); + $responses['textbox'] = sprintf( + __('Eine Textbox am Beitragsende, %s? Ideal für Hinweise oder Werbung! ✨ Gehe zu WP Multi > Textbox, füge deinen Text ein und passe das Design an. Die Box erscheint automatisch unter Beiträgen. Tipp: Nutze auffällige Farben für mehr Aufmerksamkeit! Bereit? 😄', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['banner'] = sprintf( + __('Ein schickes Banner, %s? 🎨 Gehe zu WP Stat & Notice, lade ein Bild hoch und wähle Header oder Footer. Perfekt, um Neuigkeiten zu präsentieren! Tipp: Verwende Bilder mit hohem Kontrast für bessere Sichtbarkeit. Los geht’s! 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['inhaltsverzeichnis'] = sprintf( + __('Ein Inhaltsverzeichnis für deine Beiträge, %s? 🚀 Nutze den Shortcode [alphabetical_index], um alle Beiträge übersichtlich aufzulisten. Ideal für Blogs mit vielen Inhalten! Tipp: Kombiniere es mit Kategoriefiltern für mehr Struktur. Alles klar? 😎', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['lesezeichen'] = sprintf( + __('Lesezeichen für deine Besucher, %s? 😎 Mit [add_bookmark] können Nutzer Beiträge speichern, und [display_bookmarks] zeigt ihre Liste. Alles per Cookie – keine Datenbank nötig! Tipp: Füge die Shortcodes in eine Sidebar für schnellen Zugriff! Cool, oder? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['custom shortcode'] = sprintf( + __('Eigene Shortcodes erstellen, %s? Super flexibel! 😉 Gehe zu WP Multi > Shortcodes, lege deinen Shortcode an und füge ihn im Editor ein. Ideal für wiederkehrende Inhalte! Tipp: Dokumentiere deine Shortcodes für spätere Änderungen. Bereit zum Codieren? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['kommentar sperren'] = sprintf( + __('Bestimmte Nutzer blockieren, %s? 🛡️ Gehe zu Benutzer sperren, gib Benutzername, IP oder E-Mail ein und speichere. So bleibt die Kommentarspalte sauber! Tipp: Überprüfe die Sperrliste regelmäßig, um sie aktuell zu halten. Alles sicher? 😊', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['filter'] = sprintf( + __('Kommentare filtern, %s? 😊 Gehe zu Kommentare > Kommentar Filter und verbiete URLs, Schimpfwörter oder Telefonnummern. Verstöße werden mit * ersetzt. Tipp: Teste die Filter mit einem Probekommentar, um sicherzugehen! Deine Community wird’s lieben! 🌟', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['analytics'] = sprintf( + __('Datenanalyse für deine Beiträge, %s? 📊 Unter Benutzer > Benutzer Analytics siehst du Views, Kommentare, Top-Beiträge und mehr. Perfekt, um Inhalte zu optimieren! Tipp: Exportiere die Daten für langfristige Analysen. Bereit, ein Profi zu werden? 😎', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['pinwand'] = sprintf( + __('Nachrichten für dein Team, %s? 📌 Unter Pinnwand kannst du Notizen für Admins oder Redakteure hinterlegen. Erstelle, bearbeite oder lösche sie jederzeit. Tipp: Nutze die Pinnwand für wichtige To-Dos! Alles organisiert? 😄', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['brute force'] = sprintf( + __('Sicherheit zuerst, %s! 🛡️ Der Brute-Force-Schutz protokolliert Fehlversuche und sperrt nach 5 Versuchen. Einstellungen findest du unter Sicherheit. Tipp: Aktiviere Benachrichtigungen, um verdächtige Aktivitäten zu überwachen! Alles sicher? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['anti spam'] = sprintf( + __('Spam loswerden, %s? 😒 Aktiviere den Anti-Spam-Schutz unter Sicherheit, um Bots zu blockieren. Spam-Kommentare werden automatisch gefiltert. Tipp: Kombiniere es mit Kommentarfiltern für doppelten Schutz! Bereit? 😊', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['auto tag'] = sprintf( + __('Automatische Tags, %s? ⏳ Gehe zu Beiträge > Automatische Tags, füge fehlende Tags hinzu oder verbiete Wörter. Spart Zeit! Tipp: Überprüfe die Tags regelmäßig, um sie an deine Inhalte anzupassen. Alles klar? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['login deaktivieren'] = sprintf( + __('Logins deaktivieren, %s? 🔒 Gehe zu Benutzer > Alle Benutzer, wähle einen Benutzer und schalte den Login ab. Ideal für temporäre Sperren. Tipp: Notiere dir, wen du deaktiviert hast! Alles unter Kontrolle? 😎', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['text copy'] = sprintf( + __('Inhalte schützen, %s? 🛡️ Aktiviere die Rechtsklick-Sperre unter WP Multi-Einstellungen, um Texte vor Kopieren zu sichern. Perfekt für Blogs! Tipp: Füge einen Hinweis hinzu, warum Kopieren deaktiviert ist. Bereit? 😊', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['trash mail'] = sprintf( + __('Kein Bock auf Spam-Mails, %s? 😊 Wir blockieren Trash-Mails in Kommentaren automatisch. Die Liste wird vom Entwickler gepflegt – du musst nichts tun! Tipp: Aktiviere Anti-Spam für extra Schutz! Alles sauber? 🌟', 'wp-multi-toolkit'), + esc_html($user_name) + ); // WP Multi Comment Notifications - $responses['kommentar benachrichtigung'] = __('Schickt Benachrichtigungen für neue Kommentare per Mail, Telegram oder Discord. Einstellungen unter "Kommentare > Kommentar Benachrichtigung".', 'wp-multi-toolkit'); + $responses['kommentar benachrichtigung'] = sprintf( + __('Immer über neue Kommentare informiert, %s? 🔔 Gehe zu Kommentare > Kommentar Benachrichtigung und richte E-Mail, Telegram oder Discord ein. Tipp: Filtere Benachrichtigungen, um nur wichtige zu erhalten! Nie wieder etwas verpassen! 😄', 'wp-multi-toolkit'), + esc_html($user_name) + ); // WP Multi Kategorie - $responses['kategorien ausblenden'] = __('Blende einzelne Kategorien unter "Beiträge > Kategorie Filter" aus.', 'wp-multi-toolkit'); + $responses['kategorien ausblenden'] = sprintf( + __('Kategorien ausblenden, %s? 🗂️ Gehe zu Beiträge > Kategorie Filter und wähle, was im Frontend nicht angezeigt werden soll. Ideal für eine saubere Seite! Tipp: Teste Änderungen in der Vorschau! Alles organisiert? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); // WP Multi Search - $responses['suchfunktion'] = __('Füge eine Suchfunktion (Allgemein, Gastautor, Titel) als Shortcode, Widget oder Menüeintrag hinzu. Einstellungen unter "Einstellung > WP-Multi Search".', 'wp-multi-toolkit'); + $responses['suchfunktion'] = sprintf( + __('Eine starke Suche, %s? 🔍 Füge WP Multi Search über Shortcode, Widget oder Menü hinzu. Einstellungen findest du unter Einstellung > WP-Multi Search. Tipp: Aktiviere Autovervollständigung für bessere Ergebnisse! Bereit, alles zu finden? 😎', 'wp-multi-toolkit'), + esc_html($user_name) + ); // WP Multi Team-Card - $responses['teamcard'] = __('Mit dem WP Multi Team-Card Plugin kannst du Teammitglieder mit Name, Funktion, Zuständigkeit und Bild erstellen. Nutze den Shortcode [teamcards] für die Anzeige im Frontend.', 'wp-multi-toolkit'); - $responses['teammitglied hinzufügen'] = __('Gehe zu "Team-Cards" im Admin-Menü, fülle die Felder (Name, Funktion, Zuständigkeit, Bild) aus und klicke auf "Teammitglied hinzufügen".', 'wp-multi-toolkit'); - $responses['teamcard shortcode'] = __('Verwende den Shortcode [teamcards] in einem Beitrag oder einer Seite, um alle Teammitglieder anzuzeigen. Für eine bestimmte Kategorie nutze z. B. [teamcards kategorie="slug"].', 'wp-multi-toolkit'); - $responses['teamcard kategorie'] = __('Erstelle Kategorien für Teammitglieder unter "Beiträge > Kategorien". Weise sie den Teammitgliedern zu, um sie mit dem Shortcode [teamcards kategorie="slug"] gefiltert anzuzeigen.', 'wp-multi-toolkit'); - $responses['teamcard bild'] = __('Füge ein Bild für ein Teammitglied hinzu, indem du in der "Team-Cards"-Verwaltung auf "Bild auswählen" klickst. Das Bild wird im Frontend in der Teamkarte angezeigt.', 'wp-multi-toolkit'); - $responses['teamcard löschen'] = __('Um ein Teammitglied zu löschen, gehe zu "Team-Cards", finde das Mitglied in der Liste und klicke auf "Löschen".', 'wp-multi-toolkit'); - $responses['teamcard reihenfolge'] = __('Ändere die Reihenfolge der Teammitglieder, indem du die Zeilen in der "Team-Cards"-Tabelle per Drag-and-Drop verschiebst.', 'wp-multi-toolkit'); - $responses['teamcard deinstallation'] = __('Beim Löschen des WP Multi Team-Card Plugins werden alle Teammitglieder, Kategorien und Bilder aus der Datenbank entfernt. Erstelle ein Backup, wenn du die Daten behalten möchtest.', 'wp-multi-toolkit'); - $responses['teamcard updates'] = __('Prüfe Updates für das WP Multi Team-Card Plugin unter https://git.viper.ipv64.net/M_Viper/wp-multi-teamcard. Eine Benachrichtigung erscheint im Admin-Bereich, wenn eine neue Version verfügbar ist.', 'wp-multi-toolkit'); + $responses['teamcard'] = sprintf( + __('Dein Team präsentieren, %s? 🌟 Mit WP Multi Team-Card erstellst du professionelle Teamkarten mit Namen, Funktionen und Bildern. Nutze [teamcards] im Frontend. Jetzt ausprobieren und dein Team ins Rampenlicht stellen! 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=teamcard_management') + ); + $responses['teammitglied hinzufügen'] = sprintf( + __('Ein neues Teammitglied, %s? 😄 Gehe zu Team-Cards, gib Name, Funktion, Zuständigkeit und Bild ein und klicke auf Hinzufügen. Tipp: Wähle hochauflösende Bilder für beste Darstellung! Bereit fürs Update? ✨', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['teamcard shortcode'] = sprintf( + __('Teamkarten anzeigen, %s? 🚀 Nutze [teamcards] für alle Mitglieder oder [teamcards kategorie="slug"] für eine Kategorie. Füge den Shortcode in Beiträge ein. Tipp: Teste verschiedene Layouts! Alles klar? 😊', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['teamcard kategorie'] = sprintf( + __('Kategorien für Teamkarten, %s? 🗂️ Erstelle sie unter Beiträge > Kategorien und weise sie Mitgliedern zu. Zeige sie mit [teamcards kategorie="slug"]. Tipp: Sortiere Teams nach Abteilungen! Alles organisiert? 😎', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['teamcard bild'] = sprintf( + __('Ein Bild für ein Teammitglied, %s? 😊 In Team-Cards klickst du auf Bild auswählen und lädst ein Foto hoch. Es erscheint in der Teamkarte. Tipp: Nutze quadratische Bilder für einheitliches Design! Bereit? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['teamcard löschen'] = sprintf( + __('Ein Teammitglied entfernen, %s? 🗑️ Gehe zu Team-Cards, finde das Mitglied und klicke auf Löschen. Tipp: Sichere Daten vor dem Löschen! Schnell erledigt? 😄', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['teamcard reihenfolge'] = sprintf( + __('Reihenfolge der Teamkarten ändern, %s? 😎 In Team-Cards verschiebst du Mitglieder per Drag-and-Drop. Tipp: Speichere nach dem Sortieren, um Änderungen zu sichern! Alles sortiert? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['teamcard deinstallation'] = sprintf( + __('Team-Card deinstallieren, %s? ⚠️ Achtung: Alle Teammitglieder und Bilder werden gelöscht. Sichere Daten mit einem Backup! Mehr Infos: Mehr Infos. Alles klar? 😊', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://git.viper.ipv64.net/M_Viper/wp-multi-teamcard' + ); + $responses['teamcard updates'] = sprintf( + __('Updates für Team-Card, %s? 🚀 Schau auf git.viper.ipv64.net für die neueste Version. Updates werden auch im Admin-Bereich angezeigt. Tipp: Lies die Changelogs für neue Features! Bleib up to date! 😎', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://git.viper.ipv64.net/M_Viper/wp-multi-teamcard' + ); // WP Multi Toolkit - $responses['update management'] = __('Zeigt den Status der WP Multi Plugins und verfügbare Updates im Dashboard-Widget "Verfügbare Updates für WP Multi Toolkit".', 'wp-multi-toolkit'); - $responses['support issues'] = __('Erstelle Support-Tickets unter "WP-Multi Support" für Antworten zu WP Multi Plugins.', 'wp-multi-toolkit'); - $responses['dokumentation'] = __('Finde die Dokumentation unter "WP-Multi Support > Dokumentation" mit Links zu den Plugins.', 'wp-multi-toolkit'); - $responses['virtueller assistent'] = __('Ich bin der virtuelle Assistent! Stelle mir Fragen zu WP Multi Plugins unter "WP-Multi Support > Virtueller Assistent".', 'wp-multi-toolkit'); - $responses['toolbar'] = __('Die Schnellstart-Toolbar unten rechts bietet Zugriff auf Support, Updates, Dokumentation und mich!', 'wp-multi-toolkit'); - $responses['wp multi plugins'] = __('Folgende Plugins gehören zur WP Multi-Reihe:
- WP Multi Toolkit: Schnittstelle für alle WP Multi Plugins.
- WP Multi: Hauptplugin mit vielen Funktionen.
- WP Multi Comment Notifications: Benachrichtigungen für Kommentare.
- WP Multi Search: Erweiterte Suchfunktion.
- WP Multi Kategorie: Kategoriefilter.', 'wp-multi-toolkit'); + $responses['update management'] = sprintf( + __('Updates im Griff, %s? 🌟 Im Dashboard-Widget Verfügbare Updates für WP Multi Toolkit siehst du den Status aller Plugins. Lade neue Versionen herunter und installiere sie. Jetzt prüfen. Tipp: Sichere deine Seite vor Updates! Bereit? 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('index.php') + ); + $responses['support issues'] = sprintf( + __('Hilfe nötig, %s? 😊 Erstelle ein Support-Ticket unter WP-Multi Support. Beschreibe dein Problem genau, und wir melden uns schnell! Ticket erstellen. Tipp: Screenshots helfen uns, schneller zu reagieren! Bereit? 🌟', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wp_multi_support') + ); + $responses['dokumentation'] = sprintf( + __('Alles über WP Multi erfahren, %s? 📚 Die Dokumentation findest du unter WP-Multi Support > Dokumentation. Dort gibt’s Anleitungen und FAQs. Dokumentation ansehen. Tipp: Nutze die Suche in der Doku! Bereit? 😄', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); + $responses['virtueller assistent'] = sprintf( + __('Das bin ich, %s! 😄 Dein virtueller Assistent für alle WP Multi Fragen. Stelle mir deine Fragen unter WP-Multi Support > Virtueller Assistent. Tipp: Frag nach spezifischen Features, ich kenne sie alle! Wie kann ich dir helfen? 🚀', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['toolbar'] = sprintf( + __('Die Schnellstart-Toolbar, %s? 🚀 Unten rechts findest du Support, Updates, Dokumentation und mich – alles in einem Klick! Tipp: Halte die Toolbar aktiviert für schnellen Zugriff! Praktisch, oder? 😊', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['wp multi plugins'] = sprintf( + __('Neugierig auf WP Multi Plugins, %s? 🌟 Hier die Übersicht:
  • WP Multi Toolkit: Zentrale für alle Plugins.
  • WP Multi: Viele Funktionen.
  • WP Multi Comment Notifications: Kommentar-Benachrichtigungen.
  • WP Multi Search: Smarte Suche.
  • WP Multi Kategorie: Kategoriefilter.
  • WP Multi Team-Cards: Teamkarten.
Mehr in der Dokumentation! 😎', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); - // Allgemeine Fragen und Antworten zu WP Multi Plugins - $responses['was sind wp multi plugins'] = __('Die WP Multi Plugins sind eine Sammlung von WordPress-Plugins, die erweiterte Funktionen für deine Website bieten. Dazu gehören Tools für Benachrichtigungen, Sicherheit, Statistiken, Kommentar-Management und mehr. Sieh dir die Liste unter "wp multi plugins" an!', 'wp-multi-toolkit'); - $responses['wie installiere ich ein plugin'] = __('Gehe zu "Plugins > Neu hinzufügen" in deinem WordPress-Dashboard, lade die Plugin-Datei (z. B. von https://git.viper.ipv64.net/M_Viper) hoch und aktiviere es. Alternativ kannst du es manuell über FTP in den Ordner /wp-content/plugins/ hochladen und aktivieren.', 'wp-multi-toolkit'); - $responses['wo finde ich updates'] = __('Updates für WP Multi Plugins findest du im Dashboard-Widget "Verfügbare Updates für WP Multi Toolkit" oder auf https://git.viper.ipv64.net/M_Viper. Lade die neueste Version herunter und aktualisiere das Plugin manuell.', 'wp-multi-toolkit'); - $responses['wie erstelle ich ein support ticket'] = __('Gehe zu "WP-Multi Support" im Admin-Menü, wähle das Plugin, gib einen Titel und eine Beschreibung ein und sende das Ticket ab. Du erhältst eine Bestätigung, wenn es erfolgreich erstellt wurde.', 'wp-multi-toolkit'); - $responses['welche voraussetzungen gibt es'] = __('Die WP Multi Plugins benötigen mindestens WordPress 6.7.2. Einige Funktionen (z. B. Telegram- oder Discord-Benachrichtigungen) erfordern API-Keys oder zusätzliche Konfiguration. Details findest du in der Dokumentation.', 'wp-multi-toolkit'); - $responses['sind die plugins kostenlos'] = __('Ja, alle WP Multi Plugins sind kostenlos verfügbar unter https://git.viper.ipv64.net/M_Viper. Es gibt keine versteckten Kosten und es wird kein Geld angenommen.', 'wp-multi-toolkit'); - $responses['wie deaktiviere ich ein plugin'] = __('Gehe zu "Plugins > Installierte Plugins" in deinem WordPress-Dashboard, suche das Plugin und klicke auf "Deaktivieren". Du kannst es danach löschen, wenn du es nicht mehr benötigst.', 'wp-multi-toolkit'); - $responses['wo finde ich die dokumentation'] = __('Die Dokumentation ist unter "WP-Multi Support > Dokumentation" im Admin-Menü verfügbar. Sie enthält Details zu jedem Plugin und Links zu den Download-Seiten.', 'wp-multi-toolkit'); - $responses['wer entwickelt die plugins'] = __('Die WP Multi Plugins werden von M_Viper entwickelt. Mehr Infos findest du auf https://m-viper.de oder im Repository https://git.viper.ipv64.net/M_Viper.', 'wp-multi-toolkit'); - $responses['kann ich eigene funktionen hinzufügen'] = __('Ja, die Plugins sind Open Source. Du kannst den Code auf https://git.viper.ipv64.net/M_Viper anpassen. Für Vorschläge erstelle ein Support-Ticket mit der Kategorie "Verbesserung".', 'wp-multi-toolkit'); + // Allgemeine Fragen und Antworten + $responses['was sind wp multi plugins'] = sprintf( + __('WP Multi Plugins, %s? 🚀 Eine Sammlung cooler Tools für deine Website! Von Statistiken über Sicherheit bis Benachrichtigungen – alles dabei. Schau unter wp multi plugins oder auf git.viper.ipv64.net. Bereit, deine Seite zu boosten? 😄', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://git.viper.ipv64.net/M_Viper' + ); + $responses['wie installiere ich ein plugin'] = sprintf( + __('Ein Plugin installieren, %s? 😊 Gehe zu Plugins > Neu hinzufügen, lade die Datei von git.viper.ipv64.net hoch und aktiviere es. Oder per FTP in /wp-content/plugins/. Tipp: Lies die Doku für Details! Los geht’s! 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://git.viper.ipv64.net/M_Viper' + ); + $responses['wo finde ich updates'] = sprintf( + __('Updates, %s? 🌟 Im Dashboard-Widget Verfügbare Updates für WP Multi Toolkit oder auf git.viper.ipv64.net. Lade die neue Version hoch! Tipp: Sichere deine Seite vor Updates! Bleib frisch! 😎', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://git.viper.ipv64.net/M_Viper' + ); + $responses['wie erstelle ich ein support ticket'] = sprintf( + __('Ein Support-Ticket, %s? 😊 Gehe zu WP-Multi Support, wähle das Plugin, gib Titel und Beschreibung ein und sende es ab. Jetzt erstellen. Tipp: Füge Screenshots hinzu! Wir helfen schnell! 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wp_multi_support') + ); + $responses['welche voraussetzungen gibt es'] = sprintf( + __('Voraussetzungen, %s? 📋 Mindestens WordPress 6.7.2 und PHP 7.4. Für Telegram/Discord brauchst du API-Keys. Details in der Dokumentation. Tipp: Prüfe deine Server-Einstellungen! Bereit? 😄', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); + $responses['sind die plugins kostenlos'] = sprintf( + __('Kostenlos, %s? 😄 Ja, alle WP Multi Plugins sind gratis auf git.viper.ipv64.net! Tipp: Spende dem Entwickler einen Kaffee, wenn sie dir gefallen! Bereit? 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://git.viper.ipv64.net/M_Viper' + ); + $responses['wie deaktiviere ich ein plugin'] = sprintf( + __('Plugin deaktivieren, %s? 😎 Gehe zu Plugins > Installierte Plugins, klicke auf Deaktivieren oder Löschen. Tipp: Deaktiviere vor Updates, um Konflikte zu vermeiden! Alles klar? 🌟', 'wp-multi-toolkit'), + esc_html($user_name) + ); + $responses['wo finde ich die dokumentation'] = sprintf( + __('Dokumentation, %s? 📚 Unter WP-Multi Support > Dokumentation findest du Anleitungen und FAQs. Jetzt ansehen. Tipp: Nutze die Suche in der Doku! Bereit? 😊', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); + $responses['wer entwickelt die plugins'] = sprintf( + __('Wer entwickelt sie, %s? 😊 M_Viper, ein WordPress-Fan! Besuche m-viper.de oder git.viper.ipv64.net. Tipp: Folge M_Viper für News! Cool, oder? 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://m-viper.de', + 'https://git.viper.ipv64.net/M_Viper' + ); + $responses['kann ich eigene funktionen hinzufügen'] = sprintf( + __('Eigene Funktionen, %s? 🌟 Die Plugins sind Open Source! Schau den Code auf git.viper.ipv64.net an. Ideen? Erstelle ein Ticket mit Verbesserung! Tipp: Teste in einer Staging-Umgebung! Bereit? 😎', 'wp-multi-toolkit'), + esc_html($user_name), + 'https://git.viper.ipv64.net/M_Viper' + ); + + // Neue allgemeine Antworten + $responses['wie richte ich wp multi ein'] = sprintf( + __('WP Multi einrichten, %s? 🚀 Nach der Installation gehe zu WP-Multi Support und aktiviere die Plugins. Folge der Anleitung in der Dokumentation. Tipp: Prüfe, ob deine WordPress-Version aktuell ist! Bereit? 😄', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); + $responses['was ist wordpress'] = sprintf( + __('WordPress, %s? 📝 Ein kostenloses CMS für Websites, Blogs oder Shops – ohne Programmierkenntnisse! WP Multi Plugins machen es noch besser. Mehr in der Dokumentation. Neugierig? 😊', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); + $responses['wie sichere ich meine website'] = sprintf( + __('Website sichern, %s? 🛡️ Nutze WP Multi Features wie Brute-Force-Schutz und Anti-Spam unter Sicherheit. Erstelle Backups (z. B. mit UpdraftPlus) und aktiviere die Rechtsklick-Sperre. Mehr in der Dokumentation. Alles sicher? 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); + $responses['wie verbessere ich die performance'] = sprintf( + __('Performance boosten, %s? ⚡ Nutze WP Multi Search für schnelle Suchen und Caching-Plugins wie WP Super Cache. Optimiere Bilder und prüfe Ladezeiten unter Benutzer > Benutzer Analytics. Mehr in der Dokumentation. Bereit für Speed? 😎', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs') + ); + $responses['wie kontaktiere ich den support'] = sprintf( + __('Support kontaktieren, %s? 😊 Erstelle ein Ticket unter WP-Multi Support (Ticket erstellen) oder besuche m-viper.de. Tipp: Beschreibe dein Problem genau! Bereit? 🌟', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wp_multi_support'), + 'https://m-viper.de' + ); + $responses['welche plugins sind kompatibel'] = sprintf( + __('Kompatible Plugins, %s? 🌟 WP Multi Plugins passen zu den meisten WordPress-Plugins, wenn sie die Standards einhalten. Teste in einer Staging-Umgebung. Probleme? Schau in die Dokumentation oder erstelle ein Support-Ticket! Alles klar? 😄', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs'), + admin_url('admin.php?page=wp_multi_support') + ); + $responses['wie teste ich ein plugin'] = sprintf( + __('Plugin testen, %s? 😊 Installiere es in einer Staging-Umgebung oder lokal. Aktiviere es, teste Funktionen und prüfe Kompatibilität. Probleme? Schau in die Dokumentation oder kontaktiere den Support. Tipp: Deaktiviere andere Plugins, um Konflikte zu finden! Bereit? 🚀', 'wp-multi-toolkit'), + esc_html($user_name), + admin_url('admin.php?page=wpmt_docs'), + admin_url('admin.php?page=wp_multi_support') + ); return $responses; }); +/** + * Sicherstellen, dass jQuery geladen wird + */ +function wpmt_enqueue_scripts() { + wp_enqueue_script('jquery'); +} +add_action('admin_enqueue_scripts', 'wpmt_enqueue_scripts'); + /* * Schnellzugriff-Menü (Floating Toolbar) @@ -1170,7 +2033,7 @@ function wpmt_generate_plugin_docs() { 'repo' => 'wp-multi-kategorie' ), 'wp-multi-teamcard' => array( - 'file' => 'wp-multi-teamcards/wp-multi-team-card.php', // Korrekter Pfad, wie von dir bestätigt + 'file' => 'wp-multi-teamcards/wp-multi-team-card.php', 'name' => 'WP Multi Team-Card', 'description' => __('Erstellt Teamkarten mit Name, Funktion, Zuständigkeit und Bild, die über den Shortcode [teamcards] angezeigt werden.', 'wp-multi-toolkit'), 'repo' => 'wp-multi-teamcard'