Highlights – Der Activity Feed im Weinhold Framework


Highlights


Das Highlights-Modul ist der Discord-ähnliche Activity Feed des Weinhold Frameworks. Mitglieder können Bilder, Videos und Links mit einer kurzen Caption posten – und die Community sieht es sofort im Feed.

Allgemein

Feed & Medien-Upload


Neue Posts erscheinen oben, ältere können per „Mehr laden“ nachgeladen werden (AJAX, kein Seitenreload). Bilder und Videos werden direkt beim Posten hochgeladen und in einem eigenen Verzeichnis (uploads/weinhold-highlights/) abgelegt – getrennt von der WordPress-Mediathek. Die maximale Dateigröße und Posts pro Ladevorgang sind im Dashboard konfigurierbar.

Discord-Integration


Jeder neue Highlights-Post kann automatisch eine Discord-Benachrichtigung auslösen – über das Discord-Benachrichtigungs-Modul. Webhook-URL, Aktivierungsstatus und Nachrichtenvorlage werden zentral unter Weinhold → Discord-Benachrichtigungen → Modul-Integrationen → Highlights konfiguriert.

Berechtigungen


Über das Benutzerverwaltungs-Modul lässt sich steuern, wer den Feed sehen (view) und wer neue Posts erstellen (edit) darf. Eigene Posts lassen sich zusätzlich vom Ersteller selbst löschen.

Admin-Werkzeuge


Die Admin-Seite bietet neben den Einstellungen zwei Aufräum-Funktionen: eine Medien-Verwaltung mit Vorschau aller Posts mit Datei und Lösch-Button, sowie einen Scan des Upload-Ordners auf verwaiste Dateien (Dateien ohne zugehörigen Datenbankeintrag).

Shortcodes

ShortcodeBeschreibung
weinhold_highlightsRendert den vollständigen Highlights-Feed auf einer WordPress-Seite

Dateien

modules/highlights.php – einzige Datei des Moduls: Datenbank, Datei-Upload, Frontend-Formular-Verarbeitung, AJAX (Nachladen, Löschen), Shortcode-Rendering, Admin-Oberfläche inkl. Datei-Aufräumung.

Für Entwickler

Datenbank


SpalteTypBedeutung
site_idbigintWelche Site im Netzwerk
user_idbigintErsteller des Posts
captiontextFreitext des Posts
media_url,media_typevarcharHochgeladene Datei (URL) und Typ (image/video), beide optional
link_urlvarcharOptionaler externer Link statt/zusätzlich zu Medien
created_atdatetimeErstellungszeitpunkt

Einstellungen (Option weinhold_highlights_settings): max_filesize in MB (Standard 20), per_page (Standard 15).

Wichtige Funktionen


FunktionBeschreibung
weinhold_highlights_delete_post_and_file($id,$url)Post und zugehörige Datei in einem Aufruf löschen
weinhold_highlights_delete_file_by_path($path)Datei über Pfad löschen, mit Sicherheitsprüfung gegen das Upload-Basisverzeichnis
weinhold_highlights_get_orphaned_files()Verwaiste Dateien im Highlights-Ordner finden (Dateien ohne DB-Eintrag)
weinhold_highlights_scan_upload_dir()Alle Dateien im Highlights-Ordner auflisten
weinhold_highlights_current_user_can_view()/_can_post()/_can_delete($post_user_id)Berechtigungsprüfungen, delete zusätzlich mit Eigentümer-Check

Upload-Verzeichnis


Eigenes Unterverzeichnis uploads/weinhold-highlights/ (bei Multisite-Subsites entsprechend unter uploads/sites/{id}/) über einen temporären upload_dir-Filter, der nur während des Highlights-Uploads aktiv ist. Hochgeladene Dateien werden NICHT in der WordPress-Mediathek registriert (kein wp_insert_attachment) – daher der eigene Scan für verwaiste Dateien, da WordPress-Bordmittel sie nicht kennen.

Besonderheiten

Formulare werden auf der wp-Action verarbeitet (weinhold_highlights_handle_frontend_actions(), vor dem Template-Rendering), nicht per admin-post.php – Standardmuster für Frontend-POST-Verarbeitung im Framework.

Discord-Versand läuft ausschließlich über die zentrale Funktion weinhold_discord_fire_module_event(‚highlights‘, $context) – kein eigener wp_remote_post() im Modul. Ist das Discord-Modul nicht aktiv, passiert einfach nichts (kein Fehler).

Da hochgeladene Medien nicht in der Mediathek landen, gibt es keine automatische WordPress-Aufräumung beim Löschen eines Posts über die üblichen Attachment-Hooks – weinhold_highlights_delete_post_and_file() übernimmt Datei- und Datenbanklöschung deshalb explizit gemeinsam.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert