Devraldığım WooCommerce mağazalarının en yaygın iki tipi var: 40 SKU’luk butik ve 40.000 SKU’luk endüstriyel tedarikçi. Butik, platformun arka planda ne yaptığını fark bile etmez. Tedarikçi hepsini fark eder. İkinci tip müşteriyle yeterince uzun süre Ürünler → Tüm Ürünler → Sıralama ekranında oturursan, iki ürünü iki sıra yukarı taşıdığın için WooCommerce tüm katalog dizinini yeniden kurarken tarayıcı sekmesinin gri gri kaldığını izlersin.
WooCommerce 11.2 nihayet o yolu yeniden yazıyor, aynı temizliği ürün kaydetme (save) tarafında da yapıyor. Her iki değişiklik hook deprecation’larıyla geliyor. Ürün kaydetme ya da sıralamaya bağlı özel kodun varsa — çoğu ajans kod tabanında var, hatırlansın hatırlanmasın — bu senin iki haftalık uyarın.
Advisory’nin kendisi kısa. Bir Woo eklentisi bakımını üstlenen için sonuçları kısa değil.
Aslında ne yeni
Vladimir Reznichenko, “Changes to product lifecycle hooks in WooCommerce 11.2: save and reorder” başlıklı developer advisory’yi 25 Ağustos 2026’da yayımladı. Yazı, 11.2’ye giren iki bağımsız performans yamasını anlatıyor. İkisi de belirli hook’ların ne sıklıkla tetiklendiğini değiştiriyor.
Birincisi PR #66966, “[Performance] Tune up caches invalidation during product save”. Tarihsel olarak her ürün kaydetmesi, altta yatan değer değişmiş olsun ya da olmasın, wp_set_object_terms() ve delete_post_meta() çağrılarını yapıyordu. Yama, ürün data store’larına “kayıtlı değer yazmak istediğinle zaten aynıysa bu çağrıları atla” diyor. Advisory, sonuç olarak “kayıt başına SQL sayısının %45’e kadar” düştüğünü söylüyor.
wp_set_object_terms()‘un işlevsel sözleşmesi korunuyor. Değişen tek şey, set_object_terms action’ının ne sıklıkla tetiklendiği. Eğer bu hook’a “her ürün kaydında bir şey çalıştır” mantığıyla asılıyorsan — arama indeksi tazeleme, cache warmer, webhook — bazen artık tetiklenmeyecek ve kodun sessizce iş yapmayı bırakacak. Advisory’nin kendi göç tavsiyesi bu callback’leri woocommerce_update_product veya save_post_product‘a taşımak. Bunlar taxonomi yazma yan etkisine değil, doğrudan kaydetme olayına bağlı.
İkinci değişiklik daha ilginç olanı. PR #66603, “[Performance] Fix ordering products performance (N-query pattern) (take 2)” ve PR #67812, “Product ordering: start legacy hooks deprecation cycle”, sıralama algoritmasını tamamen değiştiriyor. Eskisi her hareket için tüm kataloğu yeniden dizinliyordu — yazının başında anlattığım o desen, birkaç bin ürünün ötesinde gözle görülür yavaş, on binlerde acı verici hale geliyor. Yeni algoritma “daha hızlı yeniden dizinleme ve daha akıllı (aralık bazlı) sıralama” yapıyor; sadece gerçekten hareket etmesi gereken satırlara dokunuyor.
İki sıralama hook’u deprecate edildi. woocommerce_after_single_product_ordering eskiden tam yeniden dizinleme sırasında ürün başına bir kez tetikleniyordu; woocommerce_after_product_ordering ise sonunda bir kez. Hiçbiri yeni aralık bazlı algoritmaya temiz oturmuyor. Onların yerine 11.2, woocommerce_product_ordering_process_reindexed_products‘ı (tam yeniden dizinleme sonrası tetiklenir) ve woocommerce_product_ordering_process_moved_products‘ı (ürünler yeniden konumlandırıldıktan sonra tetiklenir) getiriyor. Güvenilir clean_post_cache action’ı ise her zaman olduğu gibi her iki yolda da etkilenen ürün başına tetikleniyor.
Bir uyumluluk koruması da var: eğer herhangi bir kod hâlâ deprecate edilen action’lara asılıyorsa, WooCommerce davranışı korumak için eski, optimize edilmemiş algoritmaya düşüyor. Yani yavaş sıralama yolunu aynen çalışır halde tutabilirsin — ama yavaş tutmuş olursun. Performans kazanımı, deprecate edilen hook’ları kod tabanından çıkarmaya bağlı.
WordPress ve WooCommerce insanları için neden önemli
Burayı ikiye ayırmakta fayda var, çünkü farklı insanları vuruyor.
Mağaza işletiyorsan pratik sonuç, Sıralama ekranının kilitlenmeyi bırakması. Gerçek kataloğu olan mağazalar — B2B tedarikçiler, endüstriyel parça, ciddi SKU sayısı olan giyim — bu özelliği sessizce kullanılamaz olarak yazıp storefront’u kategorilerle, CSV içe aktarımlarıyla düzenlenen menu order’la ya da toplu açılıp kapanan “featured” flag’iyle düzenliyor. 11.2, dahili aracın o kataloglar için yeniden çalışmasını sağlıyor. Tek başına adopte etmeye değer.
Eklenti yazıyor ya da bakıyorsan asıl yük deprecation’larda. set_object_terms değişikliği ikisinin sinsi olanı, çünkü 11.2 çıktığı gün hiçbir şey kırılmıyor. Callback’in var olmaya devam ediyor; sadece daha seyrek çağrılıyor. Bu callback senin ElasticPress tazeleme tetikleyicin, CDN purge’ün, arama indeks senkron’un idiyse — haftalar sonra bir müşteriden ürün değişikliklerinin hiçbir yere yayılmadığını öğreneceksin. Bugün add_action( 'set_object_terms' için grep at ve “ürün değişti” anlamına gelenleri woocommerce_update_product‘a taşı.
Sıralama hook’ları tasarım gereği daha sesli: WooCommerce tetiklendiklerinde deprecation warning basıyor, log’ların Slack veya Sentry’ye bağlıysa bir gün içinde göreceksin. woocommerce_after_single_product_ordering üzerinde ürün başına çalışan kod — toplu cache purge, dış envanter senkron, öğe başına audit log — gerçekten ürün başına tetiklenmesi gerekiyorsa clean_post_cache‘e, sadece özet lazımsa iki yeni aralık bazlı hook’tan birine geçmeli.
Burada WooCommerce ekibinin tüm 11.x boyunca tutarlı olduğu daha geniş bir örüntü var. Bir hook büyük katalog performansı için darboğazsa, sessizce yavaş tutulmak yerine deprecate ediliyor. WooCommerce Developer Blog’u her iki haftada bir okuyan geliştiriciler buna alışık. Bir eklentiyi kurup unutan ve sadece müşteri şikâyet edince tekrar açan ajanslar ise sürprizi yiyor.
Ne yaparım (ya da yapmam)
Somut, sırayla.
- Etkilenen dört hook adı için her müşteri kod tabanında grep at. Yani
set_object_terms,woocommerce_after_single_product_ordering,woocommerce_after_product_orderingve — hazır oradayken —productpost type içinsave_post‘uwoocommerce_update_productüzerinden geçmeden ele aldığın her yer. 11.2’nin rutin bir yükseltme mi yoksa müşteri sitesinde sessiz bir regresyon mu olacağına bu denetim karar veriyor. set_object_termscallback’lerini niyete göre ayır. Callback gerçekten taxonomi değişikliğine tepki veriyorsa yerinde bırak — terimler gerçekten değiştiğinde yine tetiklenecek. Genel bir “ürün değişti” dinleyicisi kılığındaysa,woocommerce_update_product‘a taşınacak olan o.- Sıralama callback’lerini staging’de yeni hook’lara göre yeniden yaz. İmzalar sabit, deprecation cycle duyuruldu, yanlış yaparsan fallback davranışı koruyor. Ve gerçek bir katalogla ölç — 20 ürünlük sentetik test, yeni algoritmanın sunmak için yazıldığı performans farkını yüzeye çıkarmaz.
- Yükseltmeden önce deprecation loglamayı aç.
define( 'WP_DEBUG', true );artıdefine( 'WP_DEBUG_LOG', true );, uyarıları ziyaretçilere göstermedenwp-content/debug.log‘a yakalar. 11.2’yi yayına al, bir hafta log’u takip et, eski hook’lara hâlâ vuran her üçüncü taraf eklentiyi bulursun.
Bir kenar not. Katalog sıralaması, doğru algoritmanın girdi büyüklüğüyle değiştiği o problemlerden biri. 50 kitaplık bir rafta tüm rafı yeniden dizebilirsin; bir depo koridorunda ise hareket etmesi gereken iki kutuyu taşırsın. WooCommerce’in hâlâ tam katalog yeniden dizinlemesi yapan her parçası, depoda raf algoritmasını çalıştırıyor demek. Platformun bunları depo algoritmalarına dönüştürmesini izlemek — önce sepet toplamları için, sonra stok, şimdi sıralama — 11.x döngüsünün daha umut verici eğilimlerinden biri. Bu iş pazarlama slaytına girmez. Bir ajansın 50.000 SKU’lu bir B2B müşterisine stock WooCommerce’le sessizce hizmet edip edemeyeceğine karar veren iş budur.
Advisory’yi oku, grep’i çalıştır, staging için bir öğleden sonra ayır. 11.2, ödevi yapan mağazaları ödüllendiriyor ve yapmayanları nazikçe cezalandırıyor.
Last modified: Ağustos 28, 2026
United States / English
Slovensko / Slovenčina
Canada / Français
Türkiye / Türkçe