discord-notifications


Discord-Benachrichtigungen


Das Discord-Benachrichtigungs-Modul verbindet das Weinhold Framework mit Discord. Neue Inhalte – ob Blogbeiträge, Highlights, Kalendertermine oder andere Modul-Events – können automatisch als Rich Embed in Discord-Kanälen erscheinen.

Allgemein

Post-Type-Webhooks


Für jeden WordPress-Post-Type (Beiträge, Seiten, eigene Post-Types) kann ein separater Webhook konfiguriert werden. Sobald ein Beitrag des jeweiligen Typs erstmalig veröffentlicht wird (nicht bei jedem erneuten Speichern eines bereits veröffentlichten Beitrags), sendet das Modul automatisch eine Benachrichtigung – optional mit Präfix-Text und Erwähnung bestimmter Discord-Rollen.

Modul-Integrationen


Andere Framework-Module registrieren sich als Modul-Integration und erhalten so einen eigenen Webhook-Slot mit individueller Nachrichtenvorlage. Aktuell integriert: Highlights, Kalender, LoL Comp Generator und weitere. Die Konfiguration erfolgt unter Weinhold → Discord-Benachrichtigungen → Modul-Integrationen.

Nachrichtenvorlagen


Jede Integration hat eine eigene Vorlage mit Platzhaltern wie {author}, {caption}, {url}, {date}. Discord-Embeds enthalten automatisch Author-Icon, Farbe, Bild (bei Medien), Timestamp und Footer.

Manuelles Senden & Testen


Über das Dashboard können auch manuell Nachrichten an konfigurierte Webhooks gesendet werden – praktisch für Ankündigungen. Ein eigener Testbereich erlaubt, einen Webhook vorab zu prüfen, ohne einen echten Beitrag veröffentlichen zu müssen.

Dateien

modules/discord_notifications.php – einzige Datei des Moduls: Einstellungen, Post-Type-Webhook-Logik, zentrale Modul-Event-Funktion, Webhook-Versand, Admin-Oberfläche (Post-Types, Modul-Integrationen, manueller Versand, Testbereich).

Für Entwickler

Ein Modul anbinden


Zwei Schritte, siehe auch docs/CLAUDE.md im Repo für ein vollständiges Beispiel: Erstens im eigenen Modul beim Filter weinhold_discord_module_integrations einen Eintrag mit label und description registrieren – das Modul erscheint danach automatisch unter Modul-Integrationen mit Feldern für Webhook-URL, Aktivierung und Nachrichtenvorlage. Zweitens beim eigentlichen Ereignis weinhold_discord_fire_module_event($module_id, $context) aufrufen, mit Kontext-Feldern wie author, avatar_url, caption, media_url, media_type, link_url, page_url, date_gmt, date_local (alle optional). Module dürfen Discord-Nachrichten ausschließlich über diese eine Funktion senden, kein eigenes wp_remote_post() im aufrufenden Modul.

Verfügbare Platzhalter (Modul-Vorlagen)


PlatzhalterWert
{author}Anzeigename des Nutzers
{caption}Freitext / Hauptinhalt
{link}Externer Link (leer wenn nicht übergeben)
{media_url}URL zur Mediendatei
{date}Lokal formatiertes Datum
{url}URL zur Website-Seite
{site}WordPress-Seitenname

Wichtige Funktionen


FunktionBeschreibung
weinhold_discord_fire_module_event($module_id,$context)Zentraler Einstiegspunkt für Modul-Events, prüft selbst Aktivierung und Webhook-Konfiguration
weinhold_discord_get_module_webhook($module_id)Liefert die Webhook-Konfiguration einer Modul-Integration
weinhold_discord_resolve_module_template($template,$context)Ersetzt Platzhalter in einer Modul-Nachrichtenvorlage
weinhold_discord_send_to_webhook($url,$content,$blocking,$allowed_mentions)Roher Versand an einen Discord-Webhook

Besonderheiten

transition_post_status feuert nur beim ERSTEN Übergang zu publish (alter Status war nicht bereits publish) – erneutes Speichern eines schon veröffentlichten Beitrags löst keine zweite Benachrichtigung aus. Revisionen und Autosaves werden zusätzlich explizit ausgeschlossen.

Rollen-Erwähnungen bei Post-Type-Webhooks werden serverseitig als echte Discord-Mention-Syntax zusammengebaut (Rollen-ID eingebettet), zusammen mit einer passenden allowed_mentions-Angabe im Request – ohne diese würde Discord die Erwähnung als reinen Text anzeigen statt als Ping.

Zwei komplett unabhängige Versandwege existieren nebeneinander: Post-Type-Webhooks senden reinen Text (content-Feld), Modul-Integrationen senden immer als vollwertiges Discord-Embed – beide teilen sich aber dieselbe zentrale weinhold_discord_send_to_webhook()-Funktion für den eigentlichen HTTP-Request.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.