Subscriptions
Das Abonnement-Modul fügt Produkte mit wiederkehrenden Zahlungen hinzu. Kunden kaufen Abonnements mit manueller Verlängerung, und der Administrator verwaltet sie in WooCommerce.
Funktionsweise
Section titled “Funktionsweise”- Der Administrator erstellt einen Produkttyp “Abonnement” mit Zyklus und Preis
- Der Kunde kauft ein Abonnement und bezahlt die erste Bestellung
- Das Plugin erstellt ein Abonnement mit dem Status “Aktiv”
- Vor dem Verlängerungsdatum erhält der Kunde eine Erinnerungs-E-Mail
- Am Verlängerungsdatum erstellt das Plugin eine Verlängerungsbestellung
- Der Kunde bezahlt die Verlängerungsbestellung (manuelle Verlängerung)
- Der Zyklus wiederholt sich, bis das Abonnement gekündigt wird
Konfiguration
Section titled “Konfiguration”Gehen Sie zu WooCommerce > Einstellungen > Polski > PRO-Module > Abonnements.
Das Modul wird über die folgende Option gesteuert:
polski_subscriptionsAllgemeine Einstellungen
Section titled “Allgemeine Einstellungen”| Einstellung | Beschreibung |
|---|---|
| Abonnements aktivieren | Aktiviert das Modul |
| Verlängerungsmodus | Manuell (Kunde bezahlt die Bestellung) |
| Erinnerungstage | Wie viele Tage vor der Verlängerung eine Erinnerung gesendet wird (Standard 3) |
| Kulanzzeitraum | Wie viele Tage nach dem Verlängerungsdatum das Abonnement aktiv bleibt (Standard 7) |
| Automatische Aussetzung | Abonnement nach Ablauf des Kulanzzeitraums aussetzen |
Ein Abonnementprodukt erstellen
Section titled “Ein Abonnementprodukt erstellen”- Gehen Sie zu Produkte > Neu hinzufügen
- Wählen Sie den Produkttyp: Abonnement
- Konfigurieren Sie Preis und Zyklus:
| Feld | Beschreibung |
|---|---|
| Abonnementpreis | Betrag pro Abrechnungszeitraum |
| Abrechnungszeitraum | Tag / Woche / Monat / Jahr |
| Zeitraumlänge | Anzahl der Zeiträume (z. B. 1 Monat, 3 Monate) |
| Anfangspreis | Optional - abweichender Preis für den ersten Zeitraum |
| Aktivierungsgebühr | Optional - einmalige Gebühr bei der ersten Bestellung |
| Verlängerungslimit | 0 = kein Limit, oder Anzahl der Verlängerungen |
- Veröffentlichen Sie das Produkt
Anfangspreis vs. Verlängerungspreis
Section titled “Anfangspreis vs. Verlängerungspreis”Das Plugin unterstützt Szenarien, in denen sich der Preis für den ersten Zeitraum vom Preis für die folgenden Zeiträume unterscheidet. Typische Anwendungsfälle:
- kostenlose Testphase oder Testphase zum reduzierten Preis
- werblicher Einführungspreis
- Aktivierungsgebühr + niedrigerer wiederkehrender Preis
Der Anfangspreis wird nur auf die erste Bestellung angewendet. Nachfolgende Verlängerungsbestellungen verwenden den standardmäßigen Abonnementpreis.
Lebenszyklus eines Abonnements
Section titled “Lebenszyklus eines Abonnements”Pending → Active → On Hold → Active → ... → Expired → Cancelled| Status | Beschreibung |
|---|---|
| Pending | Wartet auf Zahlung der ersten Bestellung |
| Active | Aktiv - Kunde hat Zugriff auf das Produkt |
| On Hold | Ausgesetzt - Verlängerungsbestellung wartet auf Zahlung |
| Expired | Abgelaufen - die Anzahl der Verlängerungen hat das Limit erreicht oder der Kulanzzeitraum ist verstrichen |
| Cancelled | Vom Kunden oder Administrator gekündigt |
Verlängerungen
Section titled “Verlängerungen”Manuelle Verlängerung
Section titled “Manuelle Verlängerung”In der aktuellen Version unterstützt das Plugin manuelle Verlängerungen. Das bedeutet:
- Das Plugin erstellt eine Verlängerungsbestellung mit dem Status “Zahlung ausstehend”
- Der Kunde erhält eine E-Mail mit einem Link zur Bezahlung der Bestellung
- Der Kunde bezahlt die Bestellung mit der von ihm gewählten Zahlungsmethode
- Nach der Zahlung wird das Abonnement für den nächsten Zeitraum verlängert
Verlängerungsprozess
Section titled “Verlängerungsprozess”Das Plugin prüft täglich per WP-Cron, welche Abonnements zur Verlängerung anstehen:
polski_daily_maintenanceDie Cron-Aufgabe wird einmal täglich ausgeführt und erledigt Folgendes:
- Prüfung von Abonnements, deren Verlängerungsdatum heute oder früher liegt
- Erstellung von Verlängerungsbestellungen für Abonnements, die eine Verlängerung erfordern
- Aussetzung von Abonnements, die den Kulanzzeitraum überschritten haben
- Ablauf von Abonnements, die das Verlängerungslimit erreicht haben
E-Mail-Erinnerungen
Section titled “E-Mail-Erinnerungen”Das Plugin sendet E-Mail-Erinnerungen vor dem Verlängerungsdatum:
| Wann | Inhalt | |
|---|---|---|
| Verlängerungserinnerung | X Tage vor der Verlängerung | Information über die bevorstehende Verlängerung, Betrag, Link zum Bereich |
| Verlängerungsbestellung | Am Verlängerungsdatum | Zu bezahlende Bestellung mit Zahlungslink |
| Abonnement ausgesetzt | Nach Ablauf der Zahlungsfrist | Information über die Aussetzung, Link zur Zahlung |
| Abonnement abgelaufen | Nach Ablauf des Kulanzzeitraums | Information über den Ablauf, Link zum erneuten Kauf |
E-Mail-Vorlagen können unter WooCommerce > Einstellungen > E-Mails angepasst werden.
Bereich Mein Konto
Section titled “Bereich Mein Konto”Das Modul fügt dem Bereich Mein Konto des Kunden einen Endpunkt /polski-subscriptions hinzu. Der Endpunkt ist verfügbar unter:
/moje-konto/polski-subscriptions/Abonnementliste
Section titled “Abonnementliste”Der Kunde sieht eine Tabelle mit Abonnements:
| Spalte | Beschreibung |
|---|---|
| Produkt | Name des Abonnementprodukts |
| Status | Aktueller Abonnementstatus |
| Preis | Betrag pro Zeitraum |
| Nächste Verlängerung | Datum der nächsten Verlängerung |
| Aktionen | Kündigen / Verlängerung bezahlen |
Abonnementdetails
Section titled “Abonnementdetails”Nach dem Klick auf ein Abonnement sieht der Kunde:
- vollständige Abonnementdaten (Produkt, Preis, Zyklus, Daten)
- Verlängerungsverlauf (Liste der zugehörigen Bestellungen)
- Schaltfläche zur Kündigung des Abonnements
- Schaltfläche zur Bezahlung einer ausstehenden Verlängerung (falls zutreffend)
Ein Abonnement kündigen
Section titled “Ein Abonnement kündigen”Der Kunde kann ein aktives Abonnement über den Bereich Mein Konto kündigen. Die Kündigung:
- ändert den Abonnementstatus auf “Cancelled”
- das Abonnement bleibt bis zum Ende des aktuell bezahlten Zeitraums aktiv
- der Kunde wird über das Datum des Zugriffsendes informiert
polski_pro/subscription/status_changed
Section titled “polski_pro/subscription/status_changed”Aktion, die nach einer Änderung des Abonnementstatus ausgelöst wird.
/** * @param int $subscription_id ID subskrypcji * @param string $new_status Nowy status * @param string $old_status Poprzedni 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); // Wysłanie ankiety o powód rezygnacji wp_mail( $subscription->get_customer_email(), 'Szkoda, że odchodzisz', 'Powiedz nam, dlaczego anulujesz subskrypcję: https://example.com/ankieta' ); }}, 10, 3);polski_pro/subscription/renewal_created
Section titled “polski_pro/subscription/renewal_created”Aktion, die nach dem Erstellen einer Verlängerungsbestellung ausgelöst wird.
/** * @param int $order_id ID zamówienia odnowienia * @param int $subscription_id ID subskrypcji */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('Zamówienie odnowienia dla subskrypcji #%d', $subscription_id) );}, 10, 2);polski_pro/subscription/renewal_paid
Section titled “polski_pro/subscription/renewal_paid”Aktion, die nach der Bezahlung einer Verlängerungsbestellung ausgelöst wird.
/** * @param int $order_id ID zamówienia odnowienia * @param int $subscription_id ID subskrypcji */do_action('polski_pro/subscription/renewal_paid', int $order_id, int $subscription_id);Hooks für Verlängerungserinnerungen (1.8.2+)
Section titled “Hooks für Verlängerungserinnerungen (1.8.2+)”Die Erinnerungs-Engine (standardmäßig 14 + 7 Tage vor der Verlängerung) stellt Filter und Aktionen bereit:
// Customise windows (days before renewal)add_filter('polski_subscription_reminder_windows', fn ($w) => ['first' => 21, 'second' => 7, 'last' => 1]);
// Subject / body / headers filtersadd_filter('polski_subscription_reminder_subject', fn ($s, $sub, $type) => "[$type] $s", 10, 3);add_filter('polski_subscription_reminder_body', fn ($b, $sub, $type) => $b . "\n\nThanks!", 10, 3);add_filter('polski_subscription_reminder_headers', fn () => ['Content-Type: text/html; charset=UTF-8']);
// Skip a specific subscriptionadd_filter('polski_subscription_skip_reminder', fn ($skip, $sub) => $sub->productId === 42, 10, 2);
// Observe dispatchadd_action('polski_subscription_reminder_sent', fn ($sub, $type, $days) => null, 10, 3);add_action('polski_subscription_reminder_failed', fn ($sub, $type) => null, 10, 2);Benachrichtigungen bei Preisänderung (1.8.3+)
Section titled “Benachrichtigungen bei Preisänderung (1.8.3+)”SubscriptionRepository::updateRecurringAmount() erkennt eine Betragsänderung und sendet dem Kunden eine E-Mail mit altem/neuem Preis, dem nächsten wirksamen Abrechnungsdatum und einem Ein-Klick-Kündigungslink (Anforderung des EU-Verbraucherschutzes).
add_action('polski_subscription_amount_changed', function (int $id, float $prev, float $next) { error_log("Subscription $id: $prev -> $next");}, 10, 3);
add_filter('polski_subscription_amount_change_body', fn ($body, $sub, $prev, $next) => $body, 10, 4);add_action('polski_subscription_amount_change_notified', fn ($sub, $prev, $next, $sent) => null, 10, 4);Administrationsbereich
Section titled “Administrationsbereich”Abonnementliste
Section titled “Abonnementliste”Gehen Sie zu WooCommerce > Abonnements. Die Tabelle enthält:
- Abonnement-ID
- Kunde (Vorname, Nachname, E-Mail)
- Produkt
- Status
- Preis und Zyklus
- Datum der nächsten Verlängerung
- Erstellungsdatum
Verfügbare Filter: Status, Produkt, Erstellungsdatum.
Ein Abonnement bearbeiten
Section titled “Ein Abonnement bearbeiten”Der Administrator kann:
- den Abonnementstatus ändern
- das Datum der nächsten Verlängerung ändern
- den Preis ändern (wirkt sich auf nachfolgende Verlängerungen aus)
- eine Notiz hinzufügen
- den Statusverlauf und die zugehörigen Bestellungen durchsehen
Häufige Probleme
Section titled “Häufige Probleme”Verlängerungsbestellungen werden nicht erstellt
Section titled “Verlängerungsbestellungen werden nicht erstellt”- Prüfen Sie, ob WP-Cron ordnungsgemäß funktioniert (
wp_cronwird aufgerufen) - Gehen Sie zu Werkzeuge > Scheduled Actions und prüfen Sie, ob die Aufgabe
polski_daily_maintenancegeplant ist - Vergewissern Sie sich, dass das Abonnement den Status “Active” und ein korrektes Verlängerungsdatum hat
Der Kunde erhält keine Erinnerungen
Section titled “Der Kunde erhält keine Erinnerungen”- Prüfen Sie die WooCommerce-E-Mail-Konfiguration
- Vergewissern Sie sich, dass die Vorlage für die Erinnerungs-E-Mail aktiviert ist
- Prüfen Sie die Einstellung “Erinnerungstage” - ob sie größer als 0 ist
Das Abonnement ändert nach der Zahlung seinen Status nicht
Section titled “Das Abonnement ändert nach der Zahlung seinen Status nicht”- Prüfen Sie, ob die Verlängerungsbestellung korrekt mit dem Abonnement verknüpft ist
- Überprüfen Sie die WooCommerce-Protokolle auf Fehler
- Prüfen Sie, ob das Zahlungs-Gateway den Bestellstatus korrekt ändert