media-player


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

ShortcodeBeschreibung
weinhold_media_playerRendert 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


ActionZweck
weinhold_media_player_toggle_favoriteTrack als Favorit markieren/entfernen
weinhold_media_player_save_volumeLautstärke des Nutzers speichern
weinhold_media_player_save_user_playlistsEigene 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.

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.

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.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.