News Tools

WooCommerce Subscriptions 9.2.0: Proration für physische Produkte und neue Settings

Abo-Shops mit physischen Produkten bekommen mit WooCommerce Subscriptions 9.2.0 ein lange vermisstes Feature: Anteilig berechnete Upgrades und Downgrades funktionieren jetzt auch für Ware mit Versand, nicht mehr nur für virtuelle Produkte. Das Woo-Entwicklerteam hat das Release am 8. September 2026 mit einem ausführlichen Advisory begleitet – ein Hinweis darauf, dass diesmal mehr unter der Haube passiert als bei einem üblichen Bugfix-Release.

Wie funktioniert die neue Proration für physische Produkte?

Die beiden bekannten Einstellungen „Prorate Recurring Payment“ und „Prorate Subscription Length“ lassen sich künftig auch auf physische Abo-Produkte anwenden. Technisch akzeptiert der Filter woocommerce_subscriptions_apportion_recurring_price zwei neue Werte: physical-upgrade proratet nur bei Upgrades und lässt Downgrades unangetastet, physical wirkt in beide Richtungen. Die Defaults bleiben unverändert – bestehende Shops merken vom Update zunächst nichts.

Vorsicht gilt bei einem Rollback auf 9.1.0 oder älter. Frühere Versionen kennen die neuen Werte nicht und zeigen im Settings-Dropdown schlicht keine Auswahl an. Wer diesen Bereich dann speichert, überschreibt den hinterlegten Wert mit „no“ – die Proration ist danach deaktiviert, ohne dass es jemand bemerkt.

Kernsatz: Wer nach dem Update auf 9.2.0 zurück auf 9.1.0 geht, darf die Subscriptions-Einstellungen nicht unverändert speichern – sonst geht die konfigurierte Proration verloren.

Warum verschwindet der Entfernen-Button für Geschenk-Empfänger?

Die sichtbarste Verhaltensänderung betrifft das Kundenkonto: Das Entfernen einzelner Positionen aus einem Abo wird jetzt sauber über die Capability edit_shop_subscription_line_items geprüft. Konsequenz: Empfänger verschenkter Abos sehen den Entfernen-Button nicht mehr – nur noch der Käufer darf Positionen streichen.

Für Agenturen steckt hier ein echter Breaking Change. Aufrufe von wcs_can_items_be_removed() ohne User-Kontext – aus Cron-Jobs, WP-CLI oder nicht authentifizierten REST-Requests – liefern ab 9.2.0 false statt true. Auch Remove- und Resubscribe-Links erhalten eigene Nonces pro Operation: Vor dem Update generierte Links verifizieren nicht mehr, und der „Undo?“-Link nach einem Entfernen lässt sich nicht erneut ausstellen.

Gifting und Settings: Umzug mit Migration

Die Geschenk-Option wandert vom globalen Schalter auf die Produktebene. Der bisherige Default „für alle Produkte aktiviert/deaktiviert“ entfällt; stattdessen steuert das Meta-Feld _subscription_gifting jedes Produkt einzeln, ein neuer Bulk-Edit erledigt Massenänderungen. Shops mit aktivem Gifting schreibt eine Hintergrund-Migration automatisch um. Wer Gifting nie genutzt hat, muss nichts tun: Aus ist der neue Standard für Produkte ohne gesetzten Wert.

Auch der Einstellungs-Tab wurde neu verdrahtet. Die Registrierung läuft über woocommerce_get_settings_pages, eine neue Settings_Page-Klasse bedient die REST-Route /wc/v3/settings/subscriptions, die alte Klasse WC_REST_Subscriptions_Settings ist deprecated. Das Feld für die maximale Zahl von Kunden-Suspensionen wechselt von Select auf Number – Werte bleiben gleich, aber der bisherige Filter für die Optionsliste wird ignoriert. Wer eigenen Code an diesen Screen hängt, sollte die Priorität prüfen: Core rendert jetzt bei Priorität 1 statt 10.

Nebenbei entlastet 9.2.0 das Frontend: Das Plan-Selector-Skript der integrierten All-Products-Funktion lädt nicht mehr automatisch auf jeder Seite. Wer den Plan-Selektor in eigenen Templates, AJAX-Fragmenten oder Quick-View-Modals rendert, muss WCS_ATT_Display::enqueue_frontend_script() selbst aufrufen – einmal oder mehrfach, der Aufruf ist idempotent. Klein, aber hilfreich: weniger Skript-Ballast auf Seiten ohne Abo-Optionen.

Unser Rat: 9.2.0 zuerst auf der Staging-Umgebung testen, besonders wenn Gifting, Proration oder Anpassungen an der My-Account-Seite im Einsatz sind. Das vollständige Changelog steht auf der Produktseite der Extension; das Advisory im WooCommerce Developer Blog listet alle Hooks, Filter und Prioritäten im Detail.