Birkaç yılda bir aynı telefon gelir. Mağaza, iki ürünle kurulduğu gün alınan bir indirim eklentisinin altında ezilmiştir; artık sekiz bin ürünü vardır. Eklenti onbinlerce satır kod, kendi yönetim ekranı, kendi ayarları, kendi inatları ile gelir ve her WooCommerce güncellemesi küçük bir dua olur. Sonra Black Friday çalar, finans müdürü iade oranlarının neden fırladığını sorar.
Dürüst cevap neredeyse her seferinde aynıdır. İstediğiniz kademeli indirim bir eklentiye ihtiyaç duymuyordu. Kurallarını doğru yazdığınız üç dört WooCommerce kuponuna ve onları sizin yerinize uygulayan küçük bir tutkala ihtiyaç duyuyordu. WooCommerce’in dün yayımladığı vaka çalışması, tam olarak bu hikâyeyi anlatıyor — hem de woocommerce.com’un kendi mağazasının içinden.
Yazıyı iki kez okudum, çünkü rakamlar insanı şüpheye düşüren cinsten. Sonra kodun kendisine ve pull request’e baktım; hikâye tutarlı. Bu yazı, gerçekten üzerinde durulmayı hak ediyor.
Gerçekten ne değişti
1 Temmuz 2026’da Boro Sitnikovski, WooCommerce Developer Blog’da Auto-apply coupon: how 209 lines of code replaced ~13,000 başlıklı yazıyı yayımladı. Konu, 2025 Black Friday ve Cyber Monday döneminde woocommerce.com mağazasında koşturulan kademeli kampanya motoru. Ekip, üçüncü taraf bir kademeli fiyat eklentisini söküp aynı davranışı yerleşik WooCommerce kuponları üzerine, küçük bir otomatik uygulama katmanıyla yeniden kurdu. Net satır sayısı: 209 satır eklendi, yaklaşık 12.888 satır silindi.
Mekanik kısmı iyi anlamda sıradan. Kupon düzenleme ekranındaki bir onay kutusu, wp_postmeta içine _auto_apply bayrağını yazıyor. Sepet yeniden hesaplandığında, woocommerce_after_calculate_totals kancasında, otomatik uygulama işaretli tüm kuponlar okunuyor (sonuç on iki saat önbelleğe alınıyor), her biri WC_Coupon nesnesine dönüştürülüp is_valid() çağrılıyor. Kupon geçerliyse ve sepette değilse sessizce uygulanıyor; geçersizse ve sepette varsa çıkarılıyor. Blok tabanlı sepet ve klasik sepet, otomatik uygulanan kuponların kaldır düğmesini blok sınıf adlarını hedefleyen küçük bir JavaScript ile gizliyor.
Yeniden girme sorunu — apply_coupon(), woocommerce_after_calculate_totals kancasını tetikliyor, o da yeniden uygulamayı tetiklerdi — geri çağrının içinde statik bir $running bayrağıyla çözülmüş. Egzotik bir şey değil; bir kez yazıp unuttuğunuz cinsten bir koruma.
Çekirdeğe gönderilen katkı, trunk dalına karşı taslak olarak yeniden açılan #61958 numaralı PR. Yazı, birleştirmeden önce nelerin çalışması gerektiği konusunda açık: _auto_apply meta alanının HPOS‘a düzgün bir geçiş yolu lazım, blok sepet sınıf adlarını hedefleyen JavaScript sepet sürümleri arasında kırılgan, kampanya için kullanılan kupon kodları ayarlardan değil doğrudan koddan geliyordu. Hepsi haklı eleştiri. Ama hiçbiri, kalıbın çalıştığı ve 2025 BFCM boyunca on binlerce sipariş taşıdığı gerçeğini değiştirmiyor — kupon kaynaklı tek bir kesinti olmadan.
Aynı yazıdaki iki iş rakamı da not almaya değer. İade oranı, önceki yılın aynı BFCM aralığında yüzde 13,1’den yüzde 7,8’e düştü. Müşteri başına net nakit yüzde 25 arttı. Hiçbiri tek başına kupon motoruna atfedilebilecek bir metrik değil — o yıl woocommerce.com’da başka pek çok şey de değişti — ama çok ağır yük altında güzel davranan bir kampanya makinesinin izini gösteriyorlar.
WordPress ve WooCommerce ekipleri için neden önemli
Buradan iki ayrı sonuç çıkıyor, ve aynı şey değiller.
Birincisi teknik gerçek. Basit WooCommerce kuponları üzerinde önemsiz olmayan kampanyalar koşturabilirsiniz. Kullanım limiti, ürün ve kategori kısıtlamaları, son kullanma tarihi, tekil kullanım, indirimli ürünleri hariç tutma, alt sepet tutarı, müşteri e-posta izin listesi, kullanıcı başı limit, para birimi yönetimi — hepsi zaten WC_Coupon::is_valid() içinde. Müşteriniz ne kadar harcarsan o kadar kazan ya da kategoriye özel kademe isterse, neredeyse hiçbir zaman eklentiye ihtiyacınız yoktur. Doğru asgari sepet eşikleri ve doğru tekil kullanım ayarıyla üç kupon, artı kasanın büyülü hissettirmesini istiyorsanız minik bir otomatik uygulama katmanı yeter.
İkincisi disiplin gerçeği. WooCommerce’in on üç bin satır kodu silebilmesinin sebebi eklentilerin kötü olması değildi. Mağazanın ekibi ilk ilkelere döndü ve kampanyanın gerçekten ne olduğunu, üzerinde çalıştıkları platformun dilinde sordu. Cazip olmayan bir iş. Ama bir WooCommerce sitesinin beşinci yılını yeniden yazılım gerektirmeden geçirmesini sağlayan iş de bu.
Ajanslar için önümüzdeki dört haftada belirli bir fırsat var. WooCommerce 11.0, 28 Temmuz 2026’da yeni mağazalarda varsayılan olarak açık ürün nesnesi önbelleği (17 Haziran duyurusu) ve Action Scheduler 4.0.0 ile geliyor. Bu, çoğu satıcının dördüncü çeyrek kampanyalarını planlamaya başladığı pencerenin ta kendisi. Yerleşik kuponlar üzerine kurulu bir kampanya mimarisi yeni önbellek katmanıyla uyumlu çalışır; her sepet hesaplamasına kanca takan ağır bir eklentiye kurulu olan ise çalışmayabilir.
Yerinizde olsam ne yapardım (ya da yapmazdım)
Çalışan bir indirim eklentisini bu ay canlı bir mağazadan aceleyle sökmezdim. Mevcut kurulum sorunsuz gidiyorsa, bir sonraki BFCM sonrasına kadar bekleyin. Bu yazının değeri “eklentini bugün sil” değil; artık finans ekibi eklentinin gerçekten gerekli olup olmadığını sorduğunda gösterebileceğiniz, WooCommerce geliştirici blogunda yayımlanmış bir referans uygulamanın varlığı.
Bu hafta yapacağım şey daha küçük. Müşterinizin aktif indirim ve fiyat eklentilerinin listesini açın. Her biri için bir cümleyle hangi kampanyayı gerçekten koşturduğunu yazın. Sonra o kampanyanın yerleşik kuponlarla ifade edilip edilemediğini kontrol edin — asgari harcama, ürün veya kategori kısıtlaması, indirimli ürünleri hariç tutma, kullanım limiti, tekil kullanım. İncelediğim neredeyse her vakada üçte ikisi için cevap evet. İşte bu, bir sonraki refactor için kısa liste.
Yeni mağazalarda ise varsayılanım artık, Boro’nun deseninden esinlenen küçük bir özel otomatik uygulama modülü ile yerleşik kuponlar. Aynı kod değil — o PR hâlâ taslak — ama aynı biçim. Kupon üzerinde bir bayrak, woocommerce_after_calculate_totals üzerinde bir kanca, bir yeniden girme koruması, on iki saatlik bir önbellek. Siteye özel bir eklentide yirmi küsur satır PHP. Bu modülün kampanyanın ne olduğu hakkında hiçbir görüşü yoktur; yalnızca zaten doğrulanan kuponları uygulamayı ve kaldırmayı bilir.
Bir uyarı. Otomatik uygulama katmanını, sepet sayfasına pazarlama arayüzü de basan bir mu-plugin içine koymayın. Mekanik katmanı (uygula ve kaldır) sunum katmanından (afiş, kademe açıklayıcı, ilerleme çubuğu) ayrı tutun. woocommerce.com vaka çalışmasının bütün mesele, mekanik katmanın tek oturuşta okunabilecek kadar küçük kalmasıydı. İkisini birbirine geçirirseniz o özelliği anında kaybedersiniz.
Buradaki asıl başlık 12.888 satır kod değil. woocommerce.com kadar görünür bir mağazanın yılın en büyük haftasına bir dizüstü ekranına sığacak kadar kısa bir kampanya motoruyla girmesi ve bu motorun sorunsuz çalışması. WordPress ve WooCommerce’in bu ajansı kurduğum günden beri savunduğum hâli tam olarak budur, ve bunu üretim ortamında ana geminin ispatlaması güzel.
Last modified: Temmuz 2, 2026
United States / English
Slovensko / Slovenčina
Canada / Français
Türkiye / Türkçe