Skip to content

Wartelisten verwenden

Dieser Ablauf beginnt mit der Anmeldung bei einem nicht vorrätigen Produkt und endet mit der automatischen Verfügbarkeits-E-Mail nach dem Auffüllen des Lagerbestands.

Bei einem nicht vorrätigen oder nachbestellbaren Produkt zeigt Plogins Waitlist ein E-Mail-Feld, eine verpflichtende Einwilligungs-Checkbox und eine Schaltfläche. Für angemeldete Kunden ist die E-Mail-Adresse vorausgefüllt.

Das Formular sendet eine asynchrone fetch-Anfrage an admin-ajax.php mit der Aktion restock_waitlist_subscribe und einem Nonce. Die Seite wird nicht neu geladen. Während der Anfrage setzt das Formular aria-busy; das Ergebnis wird in einem aria-live-Bereich ausgegeben.

Ein eindeutiger Datenbankschlüssel verhindert doppelte Einträge derselben E-Mail-Adresse für dasselbe Produkt. Eine erneute Anmeldung aktualisiert den vorhandenen Eintrag. Wurde dieser bereits benachrichtigt, wird er wieder als aktiv markiert.

Bei einem variablen Produkt wird das Formular zunächst verborgen ausgegeben. Das WooCommerce-Ereignis found_variation liefert die gewählte Variante. Ist sie nicht vorrätig oder nachbestellbar, zeigt das Plugin das Formular an und schreibt die Varianten-ID in das verborgene Feld product_id. Eine andere, vorrätige Variante blendet das Formular wieder aus.

Die Variantenerkennung hört auf die vorhandenen jQuery-Ereignisse des WooCommerce-Variantenformulars. Das Absenden selbst verwendet normales fetch. Wird ohne konkrete Variante ein variables Elternprodukt übermittelt, lehnt der Server die Anmeldung mit der Meldung Variante erforderlich ab.

Setze das Produkt oder die Variante auf Vorrätig. Beim WooCommerce-Ereignis woocommerce_product_set_stock_status mit instock sammelt Plogins Waitlist alle wartenden Einträge für die Produkt-ID und bei einer Variante zusätzlich für das Elternprodukt. Doppelte Empfänger werden entfernt. Erfolgreich versendete Einträge erhalten den Status benachrichtigt.

Die Klartextnachricht nutzt den konfigurierten Betreff, die Einleitung und den Abschluss. {product_name} wird im Betreff und in der Einleitung ersetzt. Dazwischen fügt das Plugin den Produktlink in einer eigenen Zeile ein. Die Zustellung hängt vom E-Mail-Versand der WordPress-Website ab.

Angemeldete Kunden sehen unter Mein Konto → Wartelisten ihre noch nicht benachrichtigten Anmeldungen. Die Zuordnung erfolgt über die Benutzer-ID oder die E-Mail-Adresse des Kontos. Jede Zeile zeigt den aktuellen Lagerstatus und bietet eine Schaltfläche zum Verlassen der Warteliste.

Das Entfernen läuft als Nonce-geschützte AJAX-Anfrage restock_waitlist_unsubscribe und ist nur für angemeldete Kunden verfügbar. Gäste haben keine Kontenansicht, erhalten aber weiterhin ihre Verfügbarkeits-E-Mail.

Verwende den Shortcode in einem eigenen Layout:

[restock_waitlist]
[restock_waitlist id="123"]

Ohne id verwendet der Shortcode das aktuelle Produkt. Mit id wird ein bestimmtes Produkt angesprochen. Das Formular erscheint weiterhin nur, wenn dieses Produkt nicht vorrätig oder nachbestellbar ist und Formular auf der Produktseite anzeigen aktiviert ist.

Unter WooCommerce → Plogins Waitlist → Abonnenten stehen die Zähler Gesamt, Wartend und Benachrichtigt. Über ?product_id=123 oder einen Produktlink lässt sich die Liste nach einem Produkt filtern. CSV exportieren lädt die aktuelle Ansicht mit ID, Produkt, E-Mail-Adresse, Benutzer-ID, Benachrichtigungsstatus und Zeitstempeln herunter. Der Export ist Nonce-geschützt.

Plogins Waitlist lädt seine Templates über einen Theme-kompatiblen Loader und stellt zwei Filter bereit. Für anderes Markup sollte das Template überschrieben werden, siehe Konfiguration.

// Adjust the variables passed into a Plogins Waitlist template.
add_filter( 'restock/template/args', function ( array $args, string $template ): array {
return $args;
}, 10, 2 );
// Override which file is loaded for a template.
add_filter( 'restock/template/path', function ( string $path, string $template ): string {
return $path;
}, 10, 2 );

restock/booted ist ein internes Startsignal und kein öffentlicher Erweiterungspunkt.

Das Formular wird serverseitig im normalen Dokumentfluss gerendert und nicht nachträglich eingefügt. Das kleine Frontend-Skript lädt mit defer. Das E-Mail-Feld besitzt ein echtes, für Screenreader verfügbares Label, die Einwilligung ist technisch required, während des Sendens gilt aria-busy, und Rückmeldungen werden über aria-live="polite" ausgegeben. Die einmalige Erfolgsanimation berücksichtigt prefers-reduced-motion.