Skip to content

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.

  1. Der Administrator erstellt einen Produkttyp “Abonnement” mit Zyklus und Preis
  2. Der Kunde kauft ein Abonnement und bezahlt die erste Bestellung
  3. Das Plugin erstellt ein Abonnement mit dem Status “Aktiv”
  4. Vor dem Verlängerungsdatum erhält der Kunde eine Erinnerungs-E-Mail
  5. Am Verlängerungsdatum erstellt das Plugin eine Verlängerungsbestellung
  6. Der Kunde bezahlt die Verlängerungsbestellung (manuelle Verlängerung)
  7. Der Zyklus wiederholt sich, bis das Abonnement gekündigt wird

Gehen Sie zu WooCommerce > Einstellungen > Polski > PRO-Module > Abonnements.

Das Modul wird über die folgende Option gesteuert:

polski_subscriptions
EinstellungBeschreibung
Abonnements aktivierenAktiviert das Modul
VerlängerungsmodusManuell (Kunde bezahlt die Bestellung)
ErinnerungstageWie viele Tage vor der Verlängerung eine Erinnerung gesendet wird (Standard 3)
KulanzzeitraumWie viele Tage nach dem Verlängerungsdatum das Abonnement aktiv bleibt (Standard 7)
Automatische AussetzungAbonnement nach Ablauf des Kulanzzeitraums aussetzen
  1. Gehen Sie zu Produkte > Neu hinzufügen
  2. Wählen Sie den Produkttyp: Abonnement
  3. Konfigurieren Sie Preis und Zyklus:
FeldBeschreibung
AbonnementpreisBetrag pro Abrechnungszeitraum
AbrechnungszeitraumTag / Woche / Monat / Jahr
ZeitraumlängeAnzahl der Zeiträume (z. B. 1 Monat, 3 Monate)
AnfangspreisOptional - abweichender Preis für den ersten Zeitraum
AktivierungsgebührOptional - einmalige Gebühr bei der ersten Bestellung
Verlängerungslimit0 = kein Limit, oder Anzahl der Verlängerungen
  1. Veröffentlichen Sie das Produkt

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.

Pending → Active → On Hold → Active → ...
→ Expired
→ Cancelled
StatusBeschreibung
PendingWartet auf Zahlung der ersten Bestellung
ActiveAktiv - Kunde hat Zugriff auf das Produkt
On HoldAusgesetzt - Verlängerungsbestellung wartet auf Zahlung
ExpiredAbgelaufen - die Anzahl der Verlängerungen hat das Limit erreicht oder der Kulanzzeitraum ist verstrichen
CancelledVom Kunden oder Administrator gekündigt

In der aktuellen Version unterstützt das Plugin manuelle Verlängerungen. Das bedeutet:

  1. Das Plugin erstellt eine Verlängerungsbestellung mit dem Status “Zahlung ausstehend”
  2. Der Kunde erhält eine E-Mail mit einem Link zur Bezahlung der Bestellung
  3. Der Kunde bezahlt die Bestellung mit der von ihm gewählten Zahlungsmethode
  4. Nach der Zahlung wird das Abonnement für den nächsten Zeitraum verlängert

Das Plugin prüft täglich per WP-Cron, welche Abonnements zur Verlängerung anstehen:

polski_daily_maintenance

Die 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

Das Plugin sendet E-Mail-Erinnerungen vor dem Verlängerungsdatum:

E-MailWannInhalt
VerlängerungserinnerungX Tage vor der VerlängerungInformation über die bevorstehende Verlängerung, Betrag, Link zum Bereich
VerlängerungsbestellungAm VerlängerungsdatumZu bezahlende Bestellung mit Zahlungslink
Abonnement ausgesetztNach Ablauf der ZahlungsfristInformation über die Aussetzung, Link zur Zahlung
Abonnement abgelaufenNach Ablauf des KulanzzeitraumsInformation über den Ablauf, Link zum erneuten Kauf

E-Mail-Vorlagen können unter WooCommerce > Einstellungen > E-Mails angepasst werden.

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/

Der Kunde sieht eine Tabelle mit Abonnements:

SpalteBeschreibung
ProduktName des Abonnementprodukts
StatusAktueller Abonnementstatus
PreisBetrag pro Zeitraum
Nächste VerlängerungDatum der nächsten Verlängerung
AktionenKündigen / Verlängerung bezahlen

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)

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

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);

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);

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 filters
add_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 subscription
add_filter('polski_subscription_skip_reminder', fn ($skip, $sub) => $sub->productId === 42, 10, 2);
// Observe dispatch
add_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);

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.

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

Verlängerungsbestellungen werden nicht erstellt

Section titled “Verlängerungsbestellungen werden nicht erstellt”
  1. Prüfen Sie, ob WP-Cron ordnungsgemäß funktioniert (wp_cron wird aufgerufen)
  2. Gehen Sie zu Werkzeuge > Scheduled Actions und prüfen Sie, ob die Aufgabe polski_daily_maintenance geplant ist
  3. Vergewissern Sie sich, dass das Abonnement den Status “Active” und ein korrektes Verlängerungsdatum hat
  1. Prüfen Sie die WooCommerce-E-Mail-Konfiguration
  2. Vergewissern Sie sich, dass die Vorlage für die Erinnerungs-E-Mail aktiviert ist
  3. 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”
  1. Prüfen Sie, ob die Verlängerungsbestellung korrekt mit dem Abonnement verknüpft ist
  2. Überprüfen Sie die WooCommerce-Protokolle auf Fehler
  3. Prüfen Sie, ob das Zahlungs-Gateway den Bestellstatus korrekt ändert
Diese Seite dient ausschließlich Informationszwecken und stellt keine Rechtsberatung dar. Konsultieren Sie vor der Umsetzung einen Anwalt. Polski for WooCommerce ist eine Open-Source-Software (GPLv2), die ohne Gewährleistung bereitgestellt wird.