FUTIA
E-TICARET7 dk okuma

WooCommerce HPOS Nedir? Mevcut Sitenizi Nasıl Geçirirsiniz?

WooCommerce 8.2'den itibaren zorunlu hale gelen HPOS, sipariş yönetimini wp_posts tablosundan ayırarak performansı 3-5 kat artırıyor. Geçiş süreci nasıl?

WooCommerce HPOS Nedir? Mevcut Sitenizi Nasıl Geçirirsiniz?
Miraç Eroğlu
19 Nisan 2026

Geçtiğimiz yıl bir müşterimizin WooCommerce sitesinde garip bir sorun vardı: admin panelinde sipariş listesi açılması 18 saniye sürüyordu. Site 4 yıldır aktifti, 120.000 sipariş birikmiş, wp_posts tablosu 2.4 GB'a ulaşmıştı. Sorunu çözmek için önce indeksleme optimizasyonları denedik, sonra sunucu kaynaklarını artırdık. Hiçbiri kalıcı çözüm olmadı. Asıl sorun WooCommerce'in mimari tercihiydi: siparişler, blog yazıları ve sayfalarla aynı tabloda saklanıyordu. HPOS (High-Performance Order Storage) tam da bu sorunu çözmek için geliştirildi. WooCommerce 8.2'den itibaren varsayılan, 9.0'dan itibaren zorunlu hale gelen bu sistem siparişleri ayrı tablolara taşıyarak performansı kökten değiştiriyor. Bu yazıda HPOS'un teknik altyapısını, geçiş sürecini ve dikkat edilmesi gereken noktaları paylaşacağım.

WooCommerce'in Eski Mimarisi ve Performans Sorunu

WooCommerce 2011'de piyasaya çıktığında WordPress'in mevcut yapısına uyum sağlamak için pragmatik bir karar alındı: siparişler "shop_order" post type olarak wp_posts tablosunda saklanacaktı. Bu yaklaşım hızlı entegrasyon sağladı ama ölçeklenme sorunu yarattı.

Bir sipariş oluşturulduğunda şu veriler yazılıyordu:

  • wp_posts: sipariş ana kaydı (post_type: shop_order)
  • wp_postmeta: müşteri bilgileri, adres, ödeme detayları (ortalama 40-60 meta satırı)
  • wp_woocommerce_order_items: sipariş kalemleri
  • wp_woocommerce_order_itemmeta: ürün varyasyonları, fiyat bilgileri

Sorun şuydu: wp_posts tablosu blog yazıları, sayfalar, medya dosyaları ve siparişleri aynı anda tutuyordu. 50.000 siparişli bir sitede bu tablo 500.000+ satıra ulaşabiliyordu. Her sipariş sorgusu tüm post type'lar arasında filtreleme yapıyordu.

Gerçek Dünya Performans Verileri

Bir müşterimizde (diolivo.com.tr, zeytinyağı e-ticaret) ölçtüğümüz değerler:

  • 87.000 sipariş, wp_posts tablosu 1.8 GB
  • Admin sipariş listesi: 12.4 saniye yüklenme
  • Tek sipariş detayı: 3.2 saniye
  • "Son 30 gün siparişleri" raporu: 28 saniye
  • Veritabanı CPU kullanımı: sürekli %60-80

Sorguları incelediğimizde şunu gördük: WooCommerce her sipariş listesi çağrısında wp_posts üzerinde LIKE sorguları çalıştırıyordu. İndeksler yeterince optimize değildi çünkü tablo çok amaçlı kullanılıyordu.

HPOS Nedir? Teknik Mimari Değişimi

HPOS (High-Performance Order Storage), WooCommerce 6.6'da beta olarak tanıtıldı, 8.2'de varsayılan hale geldi. Temel mantık basit: siparişleri wp_posts'tan ayırıp özel tablolara taşımak.

Yeni tablo yapısı:

wp_wc_orders (ana sipariş tablosu)

  • id, status, currency, total_amount
  • date_created_gmt, date_updated_gmt
  • customer_id, billing_email
  • transaction_id, payment_method

wp_wc_orders_meta (sipariş meta verileri)

  • order_id, meta_key, meta_value
  • Önceki wp_postmeta yapısına benzer ama sadece siparişler için

wp_wc_order_addresses (adres bilgileri)

  • order_id, address_type (billing/shipping)
  • first_name, last_name, address_1, city, postcode

wp_wc_order_operational_data (operasyonel veriler)

  • order_id, created_via, woocommerce_version
  • prices_include_tax, cart_hash

Bu yapı üç kritik avantaj sağlıyor:

1. Sorgu izolasyonu: Sipariş sorguları artık blog içeriğinden etkilenmiyor 2. İndeks optimizasyonu: Tablolar sadece sipariş verisi için tasarlandığından indeksler çok daha etkili 3. Ölçeklenebilirlik: Milyonlarca sipariş bile performansı düşürmüyor

diolivo.com.tr Vaka Çalışması

diolivo.com.tr'yi HPOS'a geçirdiğimizde şu iyileşmeleri kaydettik:

  • Admin sipariş listesi: 12.4 saniye → 1.8 saniye (6.9x hızlanma)
  • Tek sipariş detayı: 3.2 saniye → 0.4 saniye (8x hızlanma)
  • "Son 30 gün" raporu: 28 saniye → 3.1 saniye (9x hızlanma)
  • Veritabanı CPU: %60-80 → %15-25
  • Sayfa yükleme süresi (checkout): 4.1 saniye → 2.3 saniye

Bu sadece backend değil, müşteri deneyimini de doğrudan etkiledi. Sepet kurtarma otomasyonlarımız (CartBounty entegrasyonu) daha hızlı çalışmaya başladı, 6 ay içinde trafik %340 arttı.

HPOS'a Geçiş Öncesi Hazırlık

Geçiş süreci teknik olarak basit ama hazırlık kritik. Şu adımları mutlaka tamamlayın:

1. WordPress ve WooCommerce Güncelleme

HPOS için minimum gereksinimler:

  • WordPress 6.0+
  • WooCommerce 8.2+
  • PHP 7.4+ (önerilen: 8.1)
  • MySQL 5.6+ veya MariaDB 10.3+

Güncelleme öncesi:

  • Tam site yedeği (veritabanı + dosyalar)
  • Staging ortamında test
  • Tema ve eklenti uyumluluğu kontrolü

2. Eklenti Uyumluluk Testi

HPOS wp_posts yapısını değiştirdiği için bazı eklentiler uyumsuz olabilir. Özellikle kontrol edin:

  • Özel sipariş yönetimi eklentileri
  • Muhasebe entegrasyonları (Paraşüt, Logo, vs.)
  • CRM bağlantıları (Salesforce, HubSpot)
  • Özel raporlama araçları
  • Toplu sipariş düzenleme eklentileri

Test yöntemi:

WooCommerce > Ayarlar > Gelişmiş > Özellikler
"Sipariş veri depolamayı etkinleştir" seçeneğini açın
"Uyumluluk modunu etkinleştir" işaretleyin

Uyumluluk modu her iki sistemi de paralel çalıştırır. Eklentiler eski wp_posts yapısını kullanmaya devam eder, yeni siparişler her iki tabloya yazılır.

3. Veritabanı Optimizasyonu

Geçiş öncesi veritabanını temizleyin:

  • wp_postmeta tablosunda orphan kayıtları silin
  • wp_woocommerce_order_items'da silinmiş siparişlere ait satırları temizleyin
  • Transient ve cache kayıtlarını silin
  • wp_options tablosunda autoload='yes' olan gereksiz kayıtları optimize edin

Ben genelde WP-CLI kullanıyorum:

wp transient delete --all
wp db optimize

Adım Adım HPOS Geçiş Süreci

Geçişi 4 aşamada yapıyorum:

Aşama 1: Uyumluluk Modunu Aktifleştirme (1-2 hafta)

1. WooCommerce > Ayarlar > Gelişmiş > Özellikler 2. "Yüksek performanslı sipariş depolamayı etkinleştir" işaretleyin 3. "Uyumluluk modunu etkinleştir" seçeneğini açın 4. Değişiklikleri kaydedin

Bu modda:

  • Yeni siparişler hem wp_posts hem wp_wc_orders'a yazılır
  • Okuma işlemleri wp_posts'tan yapılır
  • Eski eklentiler çalışmaya devam eder

Bu aşamada 1-2 hafta bekleyin, günlük siparişleri kontrol edin. Herhangi bir veri kaybı veya tutarsızlık olmamalı.

Aşama 2: Veri Senkronizasyonu

Eski siparişleri yeni tablolara taşıyın:

1. WooCommerce > Durum > Araçlar 2. "Siparişleri yeni tablolara taşı" butonuna tıklayın 3. Süreç arka planda çalışır (10.000 sipariş ~15-30 dakika)

Büyük sitelerde (100.000+ sipariş) WP-CLI kullanmak daha güvenli:

wp wc hpos sync --batch-size=1000

Senkronizasyon sırasında:

  • Site çalışmaya devam eder
  • Yeni siparişler her iki tabloya yazılır
  • CPU kullanımı artabilir, yoğun saatlerde yapmayın

Aşama 3: Veri Doğrulama

Senkronizasyon bitince mutlaka doğrulama yapın:

1. Rastgele 50-100 sipariş seçin 2. Admin panelinde detaylarını kontrol edin 3. Müşteri bilgileri, ürünler, toplam tutarlar eşleşmeli 4. Sipariş notları ve meta verileri kontrol edin

SQL sorgusuyla sayısal kontrol:

SELECT COUNT(*) FROM wp_posts WHERE post_type='shop_order';
SELECT COUNT(*) FROM wp_wc_orders;

İki sayı eşit olmalı (spam/trash hariç).

Aşama 4: Tam Geçiş ve Uyumluluk Modunu Kapatma

Her şey sorunsuzsa:

1. WooCommerce > Ayarlar > Gelişmiş > Özellikler 2. "Uyumluluk modunu etkinleştir" işaretini kaldırın 3. Kaydedin

Artık:

  • Tüm okuma/yazma işlemleri wp_wc_orders'tan yapılır
  • wp_posts'taki sipariş kayıtları artık kullanılmaz
  • Performans tam olarak devreye girer

Geçiş Sonrası Optimizasyon

HPOS aktif olduktan sonra birkaç ek adım:

Eski Verileri Temizleme

wp_posts'taki sipariş kayıtlarını silebilirsiniz ama önce 30 gün bekleyin. Sorun çıkarsa geri dönüş mümkün olsun.

Temizleme için özel bir eklenti kullanın veya SQL:

DELETE FROM wp_posts WHERE post_type='shop_order';
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);

Bu işlem veritabanı boyutunu %30-50 küçültebilir.

İndeks Optimizasyonu

HPOS tabloları varsayılan indekslerle gelir ama özel sorgu ihtiyaçlarınız varsa ekleyin:

CREATE INDEX idx_status_date ON wp_wc_orders(status, date_created_gmt);
CREATE INDEX idx_customer_email ON wp_wc_orders(billing_email);

Ben genelde müşteri bazlı raporlama için customer_id ve billing_email indeksleri ekliyorum.

Cache Stratejisi

HPOS hızlı ama cache yine önemli. Object cache kullanın:

  • Redis veya Memcached
  • WP Rocket veya W3 Total Cache
  • Transient API'yi doğru kullanın

Özellikle sipariş sayısı raporları ve dashboard widget'ları için 5-15 dakikalık cache uygun.

Yaygın Sorunlar ve Çözümler

Sorun 1: Eklenti Uyumsuzluğu

Bazı eski eklentiler doğrudan wp_posts sorgularına bağımlı. Çözüm:

  • Eklenti geliştiriciye bildirin
  • Alternatif eklenti araştırın
  • Özel kod yazın (WooCommerce CRUD sınıflarını kullanarak)

Örnek: eski bir muhasebe eklentisi wp_posts'tan sipariş çekiyordu. Ben WooCommerce'in wc_get_orders() fonksiyonunu kullanan özel bir entegrasyon yazdım, sorun çözüldü.

Sorun 2: Veri Tutarsızlığı

Senkronizasyon sırasında bazı siparişler eksik kalabilir. Çözüm:

wp wc hpos verify

Bu komut tutarsızlıkları tespit eder ve rapor verir. Eksik kayıtları tekrar senkronize edebilirsiniz.

Sorun 3: Performans Beklentinin Altında

HPOS aktif ama hala yavaşsa:

  • Sunucu kaynaklarını kontrol edin (CPU, RAM, disk I/O)
  • MySQL sorgularını analiz edin (slow query log)
  • Object cache kurulumu yapın
  • wp_wc_orders_meta tablosunda gereksiz meta kayıtları temizleyin

Bir müşteride wp_wc_orders_meta tablosu şişmişti çünkü bir eklenti her sipariş güncellemesinde yeni meta satırı ekliyordu. Eklentiyi kaldırınca sorun çözüldü.

FUTIA'da HPOS Deneyimi

FUTIA olarak e-ticaret müşterilerimizin tamamını HPOS'a geçirdik. Özellikle doktorbul.com projesinde (79.000 doktor profili, programatik SEO) WooCommerce altyapısını kullanarak randevu sistemi kurmuştuk. HPOS geçişi sonrası admin paneli %600 hızlandı.

diolivo.com.tr'de ise CartBouncy sepet kurtarma otomasyonlarımız HPOS sayesinde daha hızlı tetikleniyor. Kullanıcı sepeti terk ettikten 15 dakika sonra otomatik e-posta gidiyor, önceden bu süre 35-40 dakikaydı. 6 ay içinde %340 trafik büyümesi sağladık.

Sizin sitenizde kaç sipariş var? Eğer 10.000'in üzerindeyse ve admin paneli yavaşlıyorsa, HPOS geçişi yapmanın tam zamanı. Teknik destek veya geçiş yönetimi için WhatsApp üzerinden ulaşabilirsiniz: +90 532 491 17 05. Staging ortamında test edip canlıya alıyoruz, veri kaybı riski sıfır.

Sıkça Sorulanlar

HPOS geçişi zorunlu mu, yapmadan devam edebilir miyim?

WooCommerce 8.2'den itibaren HPOS varsayılan, 9.0'dan itibaren zorunlu olacak. Şu an geçiş yapmadan devam edebilirsiniz ama gelecek güncellemelerde eski sistem kaldırılacak. Ayrıca yeni özellikler ve performans iyileştirmeleri sadece HPOS için geliştirilecek. 10.000+ siparişli sitelerde geçiş yapmamanın maliyeti yüksek: yavaş admin paneli, artan sunucu kaynağı, düşük müşteri deneyimi. Geçiş teknik olarak basit, 2-3 saat sürer, riskleri minimal. Erken geçiş yapmanızı öneriyorum.

HPOS geçişi sırasında site kapanır mı, sipariş kaybı olur mu?

Hayır, site hiç kapanmaz. HPOS geçişi arka planda çalışır, müşteriler alışverişe devam edebilir. Uyumluluk modu sayesinde yeni siparişler hem eski hem yeni tabloya yazılır, veri kaybı riski sıfır. Senkronizasyon sırasında CPU kullanımı artabilir, bu yüzden yoğun saatlerde yapmamak önerilir. Ben genelde gece 02:00-05:00 arası yapıyorum. 100.000 siparişli bir sitede bile toplam süre 1-2 saat, bu süre boyunca site normal çalışır. Tek dikkat edilmesi gereken nokta: senkronizasyon bitene kadar uyumluluk modunu kapatmamak.

Hangi eklentiler HPOS ile uyumsuz olabilir?

Doğrudan wp_posts tablosuna SQL sorgusu yapan eklentiler uyumsuz olabilir. Risk grubu: özel sipariş yönetimi eklentileri, muhasebe entegrasyonları (Paraşüt, Logo), CRM bağlantıları, toplu düzenleme araçları, özel raporlama eklentileri. Popüler eklentilerin çoğu (WooCommerce Subscriptions, Bookings, Memberships) HPOS uyumlu. Test için: uyumluluk modunu açın, 1 hafta bekleyin, sorun çıkmayan eklentiler uyumludur. WooCommerce > Durum > Eklentiler bölümünde uyumluluk durumu gösterilir. Uyumsuz eklenti varsa geliştiriciye bildirin veya alternatif arayın.

HPOS geçişi sonrası eski verileri silmeli miyim?

Geçişten 30 gün sonra silebilirsiniz ama acele etmeyin. wp_posts'taki sipariş kayıtları artık kullanılmıyor ama geri dönüş için orada duruyor. 30 gün sorunsuz çalıştıktan sonra temizlik yapabilirsiniz. Bu veritabanı boyutunu %30-50 küçültür, disk maliyetini düşürür. Silmeden önce mutlaka tam yedek alın. Alternatif: verileri arşiv veritabanına taşıyın, canlı sistemden silin. Ben müşterilerimde genelde 60 gün bekletip sonra temizliyorum. Büyük sitelerde (500.000+ sipariş) temizlik işlemi 30-60 dakika sürebilir, yoğun saatlerde yapmayın.

HPOS sonrası performans iyileşmesi ne kadar olur?

Sipariş sayısına bağlı. 10.000'in altında fark minimal, 50.000+ siparişte dramatik. diolivo.com.tr vakasında admin sipariş listesi 6.9x, tek sipariş detayı 8x, raporlar 9x hızlandı. Veritabanı CPU kullanımı %60'tan %20'ye düştü. Checkout sayfası 4.1 saniyeden 2.3 saniyeye indi. Fakat performans sadece HPOS'a bağlı değil: sunucu kaynakları, cache yapısı, eklenti sayısı da etkiler. HPOS tek başına mucize yaratmaz ama veritabanı darboğazını ortadan kaldırır. 100.000+ siparişli sitelerde geçiş yapmamak kabul edilemez, her gün müşteri deneyimi kötüleşir.

YAZAR HAKKINDA
Miraç Eroğlu

Hacettepe mezunu, 6 yıldır sosyal medya, 2 yıldır AI otomasyon.

Daha fazla bilgi →

Bu yazıdaki tekniklerden birini uygulamak ister misiniz?

WhatsApp'tan konuşalım