Nachrichten im Better Messages-Plugin nach Schlüsselwörter filtern
-
Ziel:
Wir möchten einen Filter für Nachrichten einrichten, die über das Better Messages-Plugin in WordPress gesendet werden. Der Filter soll Nachrichten blockieren, die bestimmte Schlüsselwörter enthalten (z.B. „E-Mail“, „Telefon“, „@“, „außerhalb“), und alle anderen Nachrichten ohne Probleme durchlassen. Ziel ist es, zu verhindern, dass Nutzer über das Nachrichtensystem des Plugins Kontaktdaten austauschen können.
Herausforderungen:
Unsere Implementierung führt leider dazu, dass entweder alle Nachrichten blockiert werden (unabhängig davon, ob sie verbotene Wörter enthalten oder nicht) oder alle Nachrichten ohne Filter durchgehen. Hier sind die bisher unternommenen Schritte und die aufgetretenen Probleme:
Bisherige Versuche
1. Verwendung des Hooks better_messages_message_before_save:
• Zunächst haben wir den vom Better Messages-Plugin bereitgestellten Hook better_messages_message_before_save verwendet und eine PHP-Funktion erstellt, die auf die definierten Schlüsselwörter prüft.
• Beispielcode:
function filter_and_block_messages($message_data) {
$blocked_keywords = array(‚E-Mail‘, ‚Telefon‘, ‚@‘, ‚außerhalb‘);
if (isset($message_data[‚message‘])) {
$message_text = $message_data[‚message‘];
foreach ($blocked_keywords as $keyword) {
if (stripos($message_text, $keyword) !== false) {
wp_die(‚Deine Nachricht enthält unerlaubte Kontaktinformationen und wurde blockiert.‘);
}
}
}
return $message_data;
}
add_filter(‚better_messages_message_before_save‘, ‚filter_and_block_messages‘);Ergebnis:
Leider führte dieser Code entweder dazu, dass alle Nachrichten blockiert wurden (auch wenn sie keine der verbotenen Schlüsselwörter enthielten), oder dass alle Nachrichten ohne Filterung durchgingen, abhängig von kleineren Anpassungen, die wir ausprobierten.
• Vermutete Ursache:
Es scheint, dass der Hook better_messages_message_before_save sich nicht so verhält, wie erwartet, oder dass er den Nachrichteninhalt anders verarbeitet und unsere Prüfung auf Schlüsselwörter daher nicht korrekt greift.
2. Alternative Verwendung des Hooks wp_insert_post_data:
• Als nächstes haben wir versucht, den allgemeinen WordPress-Hook wp_insert_post_data zu verwenden, um Nachrichten vor dem Speichern zu erfassen. Wir haben den Code so angepasst, dass er nur für Nachrichten vom Typ message gilt, um sicherzustellen, dass keine anderen Inhalte betroffen sind.
• Ergebnis:
Der Hook konnte die Inhalte von Better Messages offenbar nicht zuverlässig abfangen, und alle Nachrichten wurden ohne Filterung durchgelassen.
• Vermutete Ursache:
Das Better Messages-Plugin könnte eine eigene Methode zum Speichern von Nachrichten verwenden und möglicherweise nicht auf den Standard-WordPress-Workflow zurückgreifen, weshalb wp_insert_post_data hier nicht funktioniert.
3. Filterung auf der Client-Seite mit JavaScript:
• Als alternativen Ansatz haben wir JavaScript hinzugefügt, um die Nachrichten auf der Client-Seite (also direkt im Browser) zu prüfen und das Absenden zu verhindern, wenn verbotene Schlüsselwörter vorhanden sind.
• Ergebnis:
Dieser Ansatz funktioniert in einigen Szenarien, ist jedoch nicht sicher und kann leicht umgangen werden. Außerdem ist eine clientseitige Lösung nicht ideal, da die Nachricht dennoch den Server erreichen könnte, wenn JavaScript deaktiviert ist.
• Einschränkung:
Clientseitige Filterung ist generell keine empfohlene Methode für sichere Inhaltsfilterung, da sie leicht umgangen werden kann und die Nachrichten nicht zuverlässig serverseitig gefiltert werden.
4. Debugging des Hooks und Überprüfung der Ausgabe im Log:
• Wir haben auch Debugging-Code hinzugefügt, um zu prüfen, ob der Hook better_messages_message_before_save tatsächlich ausgeführt wird und ob der Nachrichteninhalt zu diesem Zeitpunkt verfügbar ist.
• Ergebnis:
Die Debug-Ausgaben waren unregelmäßig und zeigten an, dass der Hook möglicherweise nicht für die Nachrichtenfilterung im gewünschten Sinne gedacht ist oder dass er von einer internen Verarbeitungsmethode des Better Messages-Plugins überschrieben wird.
Zusammenfassung des Problems
Nach zahlreichen Versuchen mit verschiedenen Hooks, eigenen PHP-Funktionen und JavaScript konnten wir das gewünschte Verhalten nicht erreichen. Entweder werden alle Nachrichten blockiert, oder keine Nachricht wird anhand der Schlüsselwörter gefiltert. Dies lässt darauf schließen, dass der Hook better_messages_message_before_save möglicherweise nicht wie erwartet funktioniert oder dass Better Messages eine eigene Methode zur Verarbeitung der Nachrichteninhalte nutzt.
Hilfe gesucht
Wir suchen Unterstützung zu folgenden Punkten:
1. Bestätigung des richtigen Hooks:
Ist better_messages_message_before_save tatsächlich der richtige Hook, um den Nachrichteninhalt vor dem Speichern zu filtern? Falls nicht, gibt es eine alternative Methode oder einen anderen Hook innerhalb von Better Messages, um das gewünschte Verhalten zu erreichen?
2. Beispielcode oder Best Practices:
Falls möglich, wäre ein Beispiel oder eine Anleitung hilfreich, wie wir Nachrichteninhalte innerhalb von Better Messages gezielt nach bestimmten Wörtern filtern und blockieren können.
3. Dokumentation oder zusätzliche Hinweise:
Gibt es weiterführende Dokumentation oder Referenzen dazu, wie Better Messages Nachrichteninhalte speichert und welche Filtermöglichkeiten bestehen?
Wir wären sehr dankbar für jegliche Hinweise, Tipps oder Unterstützung, um dieses Problem zu lösen. Vielen Dank!Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]
-
Hallo,
ich vermute, dass du hier eher nicht eine Lösung deines Problems erwarten kannst, weil es doch eine ziemlich spezielle Frage ist.
Daher würde ich dir raten, die Frage im Support-Forum des Plugins zu stellen.Viele Grüße
Hans-Gerd-
Diese Antwort wurde vor 4 Monaten, 3 Wochen von
Hans-Gerd Gerhards geändert.
-
Diese Antwort wurde vor 4 Monaten, 3 Wochen von
- Du musst angemeldet sein, um auf dieses Thema zu antworten.