Eklenti sürümleri çoğu zaman geliştirici tarafında sessiz geçer. Sürüm numarası artar, birkaç ayar değişir, hayat devam eder. Dikkat çekenler ise bir mağazanın tekrarlayan gelirinin yarısını taşıyan eklentinin altındaki yük taşıyıcı kancaları sessizce yerinden oynatan ve güvenlik modelini yeniden yazan sürümler oluyor. WooCommerce Subscriptions 9.2.0 tam olarak bu tür bir sürüm.
Kurumsal müşteriler için abonelik sistemleri kurmaya, tekrarlayan tahsilatı yönetmenin kendi cron altyapını yazıp gecede kart sağlayıcısının zaman aşımına uğramamasını dilemek anlamına geldiği günlerde başlamıştım. Eklenti o günlerden bu yana çok olgunlaştı. Ama abonelik sisteminde olgunluk özel bir şey demektir: insanlar bugünkü ayarların üzerine yan sistemler kuruyor ve her “küçük” şema değişikliği birinin bir haftalık regresyon testine mal oluyor.
9.2.0 duyurusu 8 Eylül’de WooCommerce Developer Blog’a düştü ve “ayar güncellemeleri” başlığının ima ettiğinden fazlası içeriyor. Subscriptions için eklenti, özel ödeme geçidi ya da hesap sayfası şablonu geliştiriyorsan bu sürümü dikkatli oku — bazı değişiklikler iki yıl önce yazıp unuttuğun kodu doğrudan etkileyecek.
Aslında ne değişti
Resmi duyuru, “WooCommerce Subscriptions 9.2.0: settings updates and dev changes” başlığıyla 8 Eylül 2026’da Vasily Belolapotkov imzasıyla WooCommerce Developer Blog’da yayınlandı. Eklentinin woocommerce.com üzerindeki ürün sayfası artık 9.2.0’ı güncel sürüm olarak listeliyor; WordPress 7.1 ve WooCommerce 11.1 ile test edilmiş.
Manşet özellik, oransal ücretlendirmenin (proration) nihayet fiziksel ürünlere de uzanması. Geçmişte hem “Prorate Recurring Payment” hem de “Prorate Subscription Length” yalnızca sanal ürünlere uygulanıyordu; bu, tekrarlayan döngüyle fiziksel mal gönderen her mağazada bitmek bilmeyen özel filtre kodunun kaynağıydı. Artık woocommerce_subscriptions_apportion_recurring_price filtresi iki yeni değer kabul ediyor: physical-upgrade ve physical. woocommerce_subscriptions_apportion_length ise physical değerini kabul ediyor. -upgrade varyantı yalnızca müşteri üst pakete geçtiğinde oranlıyor, alt pakete geçişte dokunmuyor; sade physical ise her iki yönde oranlıyor.
İkinci değişiklik daha sessiz ama muhtemelen daha önemli. Kalem kaldırma ve yeniden abone olma bağlantıları artık abonelik kapsamlı paylaşılan bir nonce yerine tekil nonce kullanıyor; kalem silme işlemi ise yeni edit_shop_subscription_line_items yetkisiyle korunuyor. wcs-functions.php içindeki yardımcı wcs_can_items_be_removed( $subscription, $user_id = 0 ) şimdi true döndürmeden önce sahiplik doğrulaması yapıyor. Hesap sayfası şablonlarında kaldırma bağlantılarını elle inşa ediyorsan bunu ilk sen fark edeceksin.
Ayarlar arayüzünün kendisi baştan yazıldı. Yeni bir Settings_Page sınıfı, alanları REST tarafında /wc/v3/settings/subscriptions altına kaydediyor ve woocommerce_settings_subscriptions aksiyonuna 1 önceliğiyle bağlanıyor; kullanımdan kaldırılan WC_REST_Subscriptions_Settings sınıfının yerini alıyor. Eski woocommerce_subscriptions_max_customer_suspensions alanı seçmeceden sayı girişine dönüştü, aralık filtresi woocommerce_subscriptions_max_customer_suspension_range onunla birlikte kullanımdan kaldırıldı. Hediye etme (gifting) özelliği mağaza geneli anahtardan ürün bazlı _subscription_gifting meta anahtarına taşındı; toplu düzenleme seçeneği eklendi ve mağaza genelinde açık olan siteler için otomatik göç yazıldı.
Not almaya değer iki sessiz değişiklik daha var. WCS_Manual_Renewal_Manager::is_manual_renewal_required() artık “otomatik ödemeler kapalı” ve “manuel yenilemeleri kabul et” ayarlarının aynı anda açık olmasını istiyor; böylece birinin açık diğerinin kapalı olduğu çelişkili durum ortadan kalkıyor. Plan seçici scripti wcsatt-frontend ise özel sayfalarda artık otomatik kuyruğa alınmıyor; WCS_ATT_Display::enqueue_frontend_script() çağrısını sen yapmak zorundasın. PayPal Standard yenilemelerinde tutar doğrulamasını özelleştirmek isteyenler için yeni bir filtre eklendi: woocommerce_subscriptions_paypal_standard_expected_payment_amounts. Tüm bunları tek yerde görmek istersen WooCommerce Developer Blog changelog sayfası derli topluca listeliyor.
WordPress ve WooCommerce tarafında bu neden önemli
Subscriptions pasif bir bağımlılık değil. Tekrarlayan tahsilatla çalışan bir Woo mağazan varsa, bu eklenti ödeme adımının, e-postaların, hesabım sayfasının ve raporlama hattının içinde. Nonce kapsamını, yetki kontrolünü, filtre değerlerini ve REST rota sahipliğini değiştiren bir sürüm arka planda bitecek bir güncelleme değil — küçük bir entegrasyon projesi.
Fiziksel proration değişikliği tüccar için parlak parça. Fiziksel malı tekrarlayan planla harmanlayan her mağazada — kahve abonelikleri, baskı-kargo kutuları, donanım artı yazılım paketleri — sonunda tam olarak physical ve physical-upgrade‘in şimdi yerelde yaptığını yapan bir özel filtre kodu birikiyordu. Senin durumun buysa bu, kod eklemek değil kod silmek için bir fırsat.
Güvenlik sıkılaştırması sessizce ısıracak kısım. 9.2.0’dan önce üretilen kaldırma ve yeniden abone olma bağlantıları artık doğrulanmıyor. “Kalemi kaldır” bağlantısını sekmede açık tutan müşteri ya da eski bir e-postadan yeniden abone olma bağlantısını takip eden kullanıcı, tamamlanmış bir işlem yerine yeni bir hesabım sayfasına düşecek. Doğru davranış bu — abonelik kapsamlı paylaşılan nonce zaten zayıf noktaydı — ama güncellemeden sonra destek kayıtlarında ani bir artış olursa açıklaması bu.
Ayar arayüzünün yeniden yazılması ise eklenti geliştiricilerinin faturayı hak ettiği yer. Ayar sayfası kaplaması yapan her kod, alanın select olduğunu varsayan her admin JS dosyası, kullanımdan kaldırılan WC_REST_Subscriptions_Settings sınıfıyla doğrudan konuşan her modül gözden geçirilmeli. Duyuru açıkça belirtiyor: 9.1.0’a ya da öncesine geri dönüş, proration varsayılanını veri kaybı olmadan “kapalı”ya çeviriyor; ayar açılır menüsü hiçbir seçim göstermeden görünüyor. Geri dönüş planını hazırlarken bilmek iyi; üretimde keşfetmek pek iyi değil.
Ben olsam ne yapardım (ya da yapmazdım)
Birincisi, bunu üretimde otomatik güncellemeye bırakma. Subscriptions, WordPress.org’un otomatik güncellemeyi kapalı tutma önerisinin paranoya değil standart uygulama olduğu türden bir eklentidir. Üretim verisinin bir kopyasıyla stajda çıkar, gerçek bir yenileme döngüsü çalıştır, canlıya dokunmadan önce hesabım sayfasındaki her bağlantıya tıkla.
İkincisi, fiziksel abonelik ürünü satıyorsan proration geçişini bir onay kutusu tıklaması değil küçük bir proje olarak planla. Davranış güncellemeden sonra varsayılan olarak kapalıdır; physical mi yoksa physical-upgrade‘in mi ürün öykünle örtüştüğüne karar vermelisin ve değişikliği tek bir yükseltme ya da düşürme yeni yoldan geçmeden müşteri hizmetlerine anlatmalısın. woocommerce_subscriptions_apportion_recurring_price üzerinde özel filtre kodun varsa sil — yerel davranışın üstüne katman koyma.
Üçüncüsü, kod tabanını — tema, mu-plugins, özel eklentiler — WC_REST_Subscriptions_Settings, woocommerce_subscriptions_max_customer_suspension_range ve kaldırma ya da yeniden abone olma URL’lerini elle inşa eden herhangi bir yer için grep’le. Doğrudan sınıf referanslarını yeni Settings_Page kancalarıyla değiştir ve nonceli bağlantıları eklenti üretsin.
Dördüncüsü, mağaza genelinde gifting açıksa güncelleme sonrası ilk admin sayfa yüklenmesinde otomatik göçü izle. Ürün başına _subscription_gifting yazıyor; on binlerce abonelik uygun SKU’su olan mağazalarda bu bedava değil. Yoğun olmayan saatlerde çalıştır ya da siteyi birkaç dakikalığına bakım kipine al.
Yapmayacağım şey ise şu: Kara Cuma için kritik olan bir mağazada bu sürümü indiği gün açmak. Bu bir Eylül sürümü ve Q4’ün bu tarafındaki Woo mağazalarının güncelleme, test ve içeri yerleşme için küçük bir pencereleri var. O pencereyi kullan; Kara Cuma gecesi saat 2’de müşterinin yeniden abone olma bağlantısı çalışmadığı için acil yamayla harcama.
Fiziksel proration çoktan gelmesi gereken bir özellikti ve güvenlik temizliği memnuniyetle karşılanır. Ama bu hâlâ bir Woo mağazasının sahip olduğu en kırılgan yüzey üstünde bir eklenti güncellemesi. Ona göre test et.
Last modified: Eylül 12, 2026
United States / English
Slovensko / Slovenčina
Canada / Français
Türkiye / Türkçe