Abonnements
Das Abonnement-Modul fuegt Produkte mit wiederkehrender Zahlung hinzu. Kunden kaufen Abonnements mit manueller Verlaengerung, und der Administrator verwaltet sie in WooCommerce.
So funktioniert es
Abschnitt betitelt „So funktioniert es“- Der Administrator erstellt ein Produkt vom Typ “Abonnement” mit Zyklus und Preis
- Der Kunde kauft das Abonnement und bezahlt die erste Bestellung
- Das Plugin erstellt ein Abonnement mit dem Status “Aktiv”
- Vor dem Verlaengerungsdatum erhaelt der Kunde eine E-Mail-Erinnerung
- Am Verlaengerungstag erstellt das Plugin eine Verlaengerungsbestellung
- Der Kunde bezahlt die Verlaengerungsbestellung (manuelle Verlaengerung)
- Der Zyklus wiederholt sich bis zur Kuendigung des Abonnements
Konfiguration
Abschnitt betitelt „Konfiguration“Gehe zu WooCommerce > Einstellungen > Polski > PRO Module > Abonnements.
Das Modul wird ueber die Option gesteuert:
polski_subscriptionsAllgemeine Einstellungen
Abschnitt betitelt „Allgemeine Einstellungen“| Einstellung | Beschreibung |
|---|---|
| Abonnements aktivieren | Aktiviert das Modul |
| Verlaengerungsmodus | Manuell (Kunde bezahlt die Bestellung) |
| Erste Erinnerung | Wie viele Tage vor der Verlaengerung die erste Erinnerung gesendet wird (Standard 14) |
| Zweite Erinnerung | Wie viele Tage vor der Verlaengerung die zweite Erinnerung gesendet wird (Standard 7) |
| Kulanzzeitraum | Wie viele Tage nach dem Verlaengerungstermin das Abonnement aktiv bleibt (Standard 7) |
| Automatische Aussetzung | Setzt das Abonnement nach Ablauf des Kulanzzeitraums aus |
Erstellung eines Abonnementprodukts
Abschnitt betitelt „Erstellung eines Abonnementprodukts“- Gehe zu Produkte > Neu hinzufuegen
- Waehle den Produkttyp: Abonnement
- Konfiguriere Preis und Zyklus:
| Feld | Beschreibung |
|---|---|
| Abonnementpreis | Betrag pro Abrechnungszeitraum |
| Abrechnungszeitraum | Tag / Woche / Monat / Jahr |
| Laenge des Zeitraums | Anzahl der Zeitraeume (z. B. 1 Monat, 3 Monate) |
| Anfangspreis | Optional - anderer Preis fuer den ersten Zeitraum |
| Aktivierungsgebuehr | Optional - einmalige Gebuehr bei der ersten Bestellung |
| Verlaengerungslimit | 0 = unbegrenzt, oder Anzahl der Verlaengerungen |
- Veroeffentliche das Produkt
Anfangspreis vs. Verlaengerungspreis
Abschnitt betitelt „Anfangspreis vs. Verlaengerungspreis“Der Preis fuer den ersten Zeitraum kann sich von dem fuer die folgenden unterscheiden. Anwendungen:
- kostenloser Testzeitraum oder zu reduziertem Preis
- Aktionspreis zum Start
- Aktivierungsgebuehr + niedrigerer wiederkehrender Preis
Der Anfangspreis gilt nur fuer die erste Bestellung. Die folgenden Verlaengerungen haben den Standardpreis.
Lebenszyklus eines Abonnements
Abschnitt betitelt „Lebenszyklus eines Abonnements“Pending → Active → On Hold → Active → ... → Expired → Cancelled| Status | Beschreibung |
|---|---|
| Pending | Wartet auf die Bezahlung der ersten Bestellung |
| Active | Aktiv - der Kunde hat Zugriff auf das Produkt |
| On Hold | Ausgesetzt - die Verlaengerungsbestellung wartet auf Bezahlung |
| Expired | Abgelaufen - die Anzahl der Verlaengerungen hat das Limit erreicht oder der Kulanzzeitraum ist verstrichen |
| Cancelled | Vom Kunden oder Administrator gekuendigt |
Verlaengerungen
Abschnitt betitelt „Verlaengerungen“Manuelle Verlaengerung
Abschnitt betitelt „Manuelle Verlaengerung“Das Plugin unterstuetzt manuelle Verlaengerungen:
- Das Plugin erstellt eine Verlaengerungsbestellung mit dem Status “Wartet auf Zahlung”
- Der Kunde erhaelt eine E-Mail mit einem Link zur Bezahlung der Bestellung
- Der Kunde bezahlt die Bestellung ueber die gewaehlte Zahlungsmethode
- Nach der Bezahlung wird das Abonnement um den naechsten Zeitraum verlaengert
Verlaengerungsprozess
Abschnitt betitelt „Verlaengerungsprozess“Das Plugin prueft taeglich per WP-Cron die zu verlaengernden Abonnements:
polski_daily_maintenanceTaeglicher Cron-Job:
- prueft die zu verlaengernden Abonnements
- erstellt Verlaengerungsbestellungen
- setzt Abonnements nach dem Kulanzzeitraum aus
- laesst Abonnements nach Erreichen des Verlaengerungslimits ablaufen
E-Mail-Erinnerungen
Abschnitt betitelt „E-Mail-Erinnerungen“Das Plugin sendet zwei E-Mail-Erinnerungen vor dem Verlaengerungsdatum:
| Wann | Inhalt | |
|---|---|---|
| Erste Erinnerung | 14 Tage vor der Verlaengerung (konfigurierbar) | Information ueber die bevorstehende Verlaengerung, Betrag, Link zur Kuendigung mit einem Klick |
| Zweite Erinnerung | 7 Tage vor der Verlaengerung (konfigurierbar) | Letzte Erinnerung, Betrag, Kuendigungslink und Link zum Panel |
| Verlaengerungsbestellung | Am Verlaengerungstag | Bestellung zur Bezahlung mit Zahlungslink |
| Abonnement ausgesetzt | Nach Ablauf der Zahlungsfrist | Information ueber die Aussetzung, Link zur Bezahlung |
| Abonnement abgelaufen | Nach Ablauf des Kulanzzeitraums | Information ueber den Ablauf, Link zum erneuten Kauf |
Die E-Mail-Vorlagen koennen unter WooCommerce > Einstellungen > E-Mails angepasst werden.
Mein-Konto-Panel
Abschnitt betitelt „Mein-Konto-Panel“Das Modul fuegt einen Abschnitt in Mein Konto unter folgender Adresse hinzu:
/moje-konto/polski-subscriptions/Liste der Abonnements
Abschnitt betitelt „Liste der Abonnements“Der Kunde sieht eine Tabelle mit Abonnements:
| Spalte | Beschreibung |
|---|---|
| Produkt | Name des Abonnementprodukts |
| Status | Aktueller Status des Abonnements |
| Preis | Betrag pro Zeitraum |
| Naechste Verlaengerung | Datum der naechsten Verlaengerung |
| Aktionen | Kuendigen / Verlaengerung bezahlen |
Details des Abonnements
Abschnitt betitelt „Details des Abonnements“Nach dem Klick auf ein Abonnement sieht der Kunde:
- die vollstaendigen Abonnementdaten (Produkt, Preis, Zyklus, Daten)
- die Verlaengerungshistorie (Liste der verknuepften Bestellungen)
- die Schaltflaeche zur Kuendigung des Abonnements
- die Schaltflaeche zur Bezahlung der ausstehenden Verlaengerung (falls zutreffend)
Kuendigung des Abonnements
Abschnitt betitelt „Kuendigung des Abonnements“Der Kunde kann ein aktives Abonnement in Mein Konto kuendigen. Die Kuendigung:
- aendert den Status des Abonnements auf “Cancelled”
- das Abonnement bleibt bis zum Ende des aktuell bezahlten Zeitraums aktiv
- der Kunde wird ueber das Datum des Zugriffsendes informiert
polski_pro/subscription/status_changed
Abschnitt betitelt „polski_pro/subscription/status_changed“Aktion, die nach einer Statusaenderung des Abonnements ausgeloest wird.
/** * @param int $subscription_id ID des Abonnements * @param string $new_status Neuer Status * @param string $old_status Vorheriger Status */do_action('polski_pro/subscription/status_changed', int $subscription_id, string $new_status, string $old_status);Beispiel:
add_action('polski_pro/subscription/status_changed', function (int $subscription_id, string $new_status, string $old_status): void { if ($new_status === 'cancelled') { $subscription = polski_pro_get_subscription($subscription_id); // Versand einer Umfrage zum Kuendigungsgrund wp_mail( $subscription->get_customer_email(), 'Schade, dass du gehst', 'Sag uns, warum du dein Abonnement kuendigst: https://example.com/umfrage' ); }}, 10, 3);polski_pro/subscription/renewal_created
Abschnitt betitelt „polski_pro/subscription/renewal_created“Aktion, die nach der Erstellung einer Verlaengerungsbestellung ausgeloest wird.
/** * @param int $order_id ID der Verlaengerungsbestellung * @param int $subscription_id ID des Abonnements */do_action('polski_pro/subscription/renewal_created', int $order_id, int $subscription_id);Beispiel:
add_action('polski_pro/subscription/renewal_created', function (int $order_id, int $subscription_id): void { $order = wc_get_order($order_id); $order->add_order_note( sprintf('Verlaengerungsbestellung fuer Abonnement #%d', $subscription_id) );}, 10, 2);polski_pro/subscription/renewal_paid
Abschnitt betitelt „polski_pro/subscription/renewal_paid“Aktion, die nach der Bezahlung einer Verlaengerungsbestellung ausgeloest wird.
/** * @param int $order_id ID der Verlaengerungsbestellung * @param int $subscription_id ID des Abonnements */do_action('polski_pro/subscription/renewal_paid', int $order_id, int $subscription_id);Hooks fuer Verlaengerungserinnerungen (1.8.2+)
Abschnitt betitelt „Hooks fuer Verlaengerungserinnerungen (1.8.2+)“Die Erinnerungs-Engine (14 Tage + 7 Tage vor der Verlaengerung) stellt Filter und Aktionen fuer eine vollstaendige Personalisierung bereit:
// Aendere die Erinnerungsfenster (in Tagen)add_filter('polski_subscription_reminder_windows', fn ($w) => ['first' => 21, 'second' => 7, 'last' => 1]);
// Aendere den Betreff der E-Mailadd_filter('polski_subscription_reminder_subject', fn ($subject, $sub, $type) => "[$type] $subject", 10, 3);
// Aendere den Inhalt der E-Mailadd_filter('polski_subscription_reminder_body', fn ($body, $sub, $type) => $body . "\n\nDanke!", 10, 3);
// Zusaetzliche Header (z. B. HTML-Modus)add_filter('polski_subscription_reminder_headers', fn () => ['Content-Type: text/html; charset=UTF-8']);
// Erinnerung fuer ein bestimmtes Abonnement ueberspringenadd_filter('polski_subscription_skip_reminder', fn ($skip, $sub) => $sub->productId === 42, 10, 2);
// Versandvorgaenge beobachtenadd_action('polski_subscription_reminder_sent', fn ($sub, $type, $days) => error_log("Sent $type to $sub->email"), 10, 3);add_action('polski_subscription_reminder_failed', fn ($sub, $type) => error_log("Failed $type"), 10, 2);Benachrichtigungen ueber Preisaenderungen (1.8.3+)
Abschnitt betitelt „Benachrichtigungen ueber Preisaenderungen (1.8.3+)“SubscriptionRepository::updateRecurringAmount() erkennt eine Betragsaenderung und sendet automatisch eine E-Mail an den Kunden mit:
- altem und neuem Betrag,
- Datum des Inkrafttretens der Aenderung (naechster Abrechnungszyklus),
- One-Click-Cancel-Link (Anforderungen des EU-Verbraucherschutzes).
Hooks:
// Betragsaenderung beobachtenadd_action('polski_subscription_amount_changed', function (int $id, float $previous, float $next) { error_log("Subscription $id: $previous -> $next");}, 10, 3);
// Inhalt der E-Mail personalisierenadd_filter('polski_subscription_amount_change_body', fn ($body, $sub, $prev, $next) => $body, 10, 4);
// Ergebnis des Versands beobachtenadd_action('polski_subscription_amount_change_notified', fn ($sub, $prev, $next, $sent) => null, 10, 4);Admin-Panel
Abschnitt betitelt „Admin-Panel“Liste der Abonnements
Abschnitt betitelt „Liste der Abonnements“Gehe zu WooCommerce > Abonnements. Die Tabelle enthaelt:
- ID des Abonnements
- Kunde (Vorname, Nachname, E-Mail)
- Produkt
- Status
- Preis und Zyklus
- Datum der naechsten Verlaengerung
- Erstellungsdatum
Verfuegbare Filter: Status, Produkt, Erstellungsdatum.
Bearbeitung des Abonnements
Abschnitt betitelt „Bearbeitung des Abonnements“Der Administrator kann:
- den Status des Abonnements aendern
- das Datum der naechsten Verlaengerung aendern
- den Preis aendern (wirkt sich auf die folgenden Verlaengerungen aus)
- eine Notiz hinzufuegen
- die Statushistorie und die verknuepften Bestellungen einsehen
Haeufigste Probleme
Abschnitt betitelt „Haeufigste Probleme“Verlaengerungsbestellungen werden nicht erstellt
Abschnitt betitelt „Verlaengerungsbestellungen werden nicht erstellt“- Pruefe, ob WP-Cron korrekt funktioniert (
wp_cronwird aufgerufen) - Gehe zu Werkzeuge > Scheduled Actions und pruefe, ob der Job
polski_daily_maintenanceeingeplant ist - Verifiziere, ob das Abonnement den Status “Active” und ein korrektes Verlaengerungsdatum hat
Der Kunde erhaelt keine Erinnerungen
Abschnitt betitelt „Der Kunde erhaelt keine Erinnerungen“- Pruefe die Konfiguration der WooCommerce E-Mails
- Verifiziere, ob die Vorlage der Erinnerungs-E-Mail aktiviert ist
- Pruefe die Einstellung “Erinnerungstage” - ist sie groesser als 0
Das Abonnement aendert nach der Bezahlung nicht den Status
Abschnitt betitelt „Das Abonnement aendert nach der Bezahlung nicht den Status“- Pruefe, ob die Verlaengerungsbestellung korrekt mit dem Abonnement verknuepft ist
- Verifiziere die WooCommerce-Logs auf Fehler
- Pruefe, ob das Zahlungsgateway den Bestellstatus korrekt aendert