Media Player
Das Media-Player-Modul bringt einen vollwertigen Audioplayer mit Playlisten-Verwaltung ins Weinhold Framework. Titel, Interpret, Cover-Bild, Download-Button, Favoriten und eigene Playlisten für eingeloggte Nutzer sind komplett integriert.
Allgemein
Playlisten verwalten
Im Dashboard unter Weinhold → Media Player werden Playlisten angelegt und Titel aus der WordPress-Mediathek hinzugefügt. Jeder Titel kann mit eigenen Metadaten (Titel, Interpret, Beschreibung, Cover-Bild) versehen werden, die die Mediathek-Angaben überschreiben. Playlisten und Titel lassen sich per Drag & Drop sortieren.
Für eingeloggte Nutzer: Favoriten & eigene Playlisten
Eingeloggte Besucher können Titel als Favorit markieren und eigene Playlisten aus dem vorhandenen Track-Angebot zusammenstellen – gespeichert pro Nutzer und pro Seite, auf der der Player eingebettet ist. Auch die zuletzt eingestellte Lautstärke wird pro Nutzer gemerkt. Der Player bietet dafür eigene Reiter: „Alle Tracks“, „Favoriten“ und „Meine Playlists“.
Gestaltung
Ein eigenes Custom-CSS-Feld im Dashboard erlaubt Anpassungen am Frontend-Design zusätzlich zur mitgelieferten Standardvorlage.
Shortcodes
Shortcode Beschreibung weinhold_media_player Rendert den Player. Attribute: playlists (kommagetrennte Playlist-IDs, Standard alle), show_playlist_names (1/0), show_playlist_icons (1/0), collapsed (1/0, Liste initial eingeklappt starten)
Beispiel: nur bestimmte Playlisten und eingeklappt starten: playlists=“1,3,5″ collapsed=“1″.
Dateien
modules/media_player.php – einzige PHP-Datei des Moduls: Einstellungen, Track-Aufbereitung, AJAX-Handler für Favoriten/Lautstärke/eigene Playlisten, Shortcode-Rendering, Admin-Oberfläche, Cleanup. Frontend-Player-Logik in assets/weinhold_media_player_front.js, Admin-UI (Mediathek-Auswahl, Drag&Drop) in assets/weinhold_media_player_admin.js.
Für Entwickler
Datenhaltung
Playlisten/Tracks liegen als verschachteltes Array in der Option weinhold_media_player_settings (kein eigenes DB-Schema, Tracks referenzieren Anhänge der WordPress-Mediathek per media_id). Nutzerbezogene Daten (Favoriten, eigene Playlisten, Lautstärke) liegen als User-Meta, jeweils zusätzlich nach Blog-ID und – bei Favoriten/eigenen Playlisten – nach page_context getrennt (weinhold_media_player_get_page_context_key(): Beitrags-/Seiten-ID, sonst ein Hash der Request-URI).
AJAX-Endpunkte
Action Zweck weinhold_media_player_toggle_favorite Track als Favorit markieren/entfernen weinhold_media_player_save_volume Lautstärke des Nutzers speichern weinhold_media_player_save_user_playlists Eigene Playlisten des Nutzers speichern (als JSON übergeben)
Alle drei erfordern einen eingeloggten Nutzer und einen Nonce, kein nopriv-Pendant.
Datenübergabe ans Frontend
Der komplette Player-Zustand (Tracks, Playlisten, eigene Playlisten, Favoriten, Lautstärke, Login-Status) wird als JSON im data-media-player-Attribut des Wrapper-Divs ausgegeben, nicht per wp_localize_script() – das Frontend-JS liest es direkt aus dem DOM.
Legacy-Migration bei Favoriten: Ältere Installationen speicherten Favoriten ohne page_context-Trennung. Beim ersten Zugriff auf eine noch nicht existierende page-context-spezifische Favoritenliste wird automatisch auf den alten, globalen Schlüssel zurückgegriffen und in den neuen migriert. Cleanup entfernt Nutzer-Metadaten musterbasiert per SQL LIKE (z. B. alle weinhold_media_player_playlists_{blog_id}_*-Einträge über alle Nutzer hinweg), nicht nur die globalen Plugin-Einstellungen – wichtig, weil pro Nutzer und Seitenkontext eigene Meta-Keys entstehen, die sich nicht einzeln aufzählen lassen.Besonderheiten
Cover-Bild-Fallback: Ist für einen Track kein eigenes Cover hinterlegt, wird automatisch das Vorschaubild der Mediendatei selbst als Cover verwendet (falls vorhanden), bevor ganz auf ein Cover verzichtet wird.
Versionshistorie
Version Datum Änderung 1.0.0 22.09.2026 Einführung der Versionierung.