wunschliste


Wunschliste


Das Wunschlisten-Modul ermöglicht gemeinsame Wunschlisten für Mitglieder einer Webseite. Der clevere Trick: Andere Nutzer können Wünsche als „gekauft“ markieren – der Listenbesitzer sieht das aber erst nach einem selbst festgelegten Datum.

Allgemein

Wünsche verwalten


Jeder Wunsch besteht aus Name, optionalem Link und Menge. Die Verwaltung der eigenen Liste (Titel, Kurzbeschreibung, ausführliche Beschreibung, Reihenfolge der Wünsche, Verbergen-Datum) erfolgt direkt im Frontend, solange die Liste noch verborgen ist.

Verdeckte Kaufmarkierung


Sobald ein anderer Nutzer einen Wunsch als „gekauft“ markiert, sieht der Listenbesitzer bis zum eingestellten Datum ausschließlich „Bis Datum verborgen“ – unabhängig vom tatsächlichen Status. Erst nach Ablauf der Frist wird sichtbar, was gekauft wurde und von wem. Hat ein anderer Nutzer einen Wunsch bereits markiert, können weitere Nutzer ihn nicht zusätzlich markieren oder entmarkieren – nur wer selbst markiert hat, kann die Markierung wieder rückgängig machen.

Zugriff


Sichtbar sind nur Wunschlisten von Mitgliedern der jeweiligen Website (bei Multisite: Mitgliedschaft auf der konkreten Subsite, Netzwerk-Administratoren sehen immer alles).

Shortcodes

ShortcodeBeschreibung
weinhold_wishlistRendert die Wunschlisten-Übersicht. Eingeloggte Nutzer sehen ihre eigene Liste und können die Listen anderer Mitglieder einsehen

Dateien

modules/wishlist.php – einzige Datei des Moduls: Datenbank, Datum-/Zeitzonen-Hilfsfunktionen, Frontend-Formularverarbeitung, Listen- und Detailansicht, Shortcode, Cleanup.

Für Entwickler

Datenbank


TabelleSpalten(Auswahl)
weinhold_wishlistsowner_user_id, title, caption, description, reveal_at_gmt
weinhold_wishlist_itemswishlist_id, name, item_url, quantity, sort_order, purchased_by, purchased_at_gmt

Beide Tabellen nutzen das site-lokale wpdb prefix, keine eigene site_id-Trennung auf Item-Ebene (die liegt nur auf der Listen-Tabelle).

Zeitzonen-Handling


reveal_at_gmt wird konsequent in UTC gespeichert. weinhold_wishlist_parse_local_datetime() wandelt die lokale Eingabe aus dem datetime-local-Formularfeld in UTC um, weinhold_wishlist_get_datetime_input_value() den umgekehrten Weg fürs erneute Befüllen des Formulars, weinhold_wishlist_format_local_datetime() für die reine Anzeige in der Zeitzone der Website.

Wichtige Funktionen


FunktionBeschreibung
weinhold_wishlist_user_has_access($user_id,$site_id)Prüft Mitgliedschaft auf der Site (Multisite: is_user_member_of_blog, Super-Admins immer erlaubt)
weinhold_wishlist_get_lists_for_site($site_id,$mode)Listet Listen einer Site, Modus open oder revealed (nach reveal_at_gmt gefiltert)
weinhold_wishlist_render_detail($list,$user_id,$site_id)Rendert eine einzelne Liste inkl. der komletten Sichtbarkeitslogik für Kaufstatus

Besonderheiten

Die Verbergung ist konsequent serverseitig: Der Kaufstatus wird dem Besitzer schlicht nie ausgeliefert, solange reveal_at_gmt in der Zukunft liegt – nicht nur per CSS versteckt, sondern gar nicht erst unterscheidbar von „nicht gekauft“ gerendert.

Kein Prioritäts- oder Bildfeld je Wunsch: Anders als man vom Namen „Wunschliste“ erwarten könnte, unterstützt das Datenmodell aktuell nur Name, Link und Menge pro Eintrag – keine Prioritätsstufen, keine Bilder.

Formulare werden auf der wp-Action verarbeitet (weinhold_wishlist_handle_frontend_actions(), vor dem Template-Rendering), das im Framework übliche Muster für Frontend-POST-Verarbeitung.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.