News Tools

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

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.