WooCommerce HPOS Nedir? Mevcut Sitenizi Nasıl Geçirirsiniz?
WooCommerce 8.2'den itibaren varsayılan hale gelen HPOS sistemi, eski wp_posts tablosu yerine özel sipariş tabloları kullanıyor. Geçiş yapmadan önce nelere dikkat etmelisiniz?

Geçen ay diolivo.com.tr için CartBounty kurulumunu tamamladıktan sonra, site sahibi bana şunu sordu: "Dashboard'da sürekli 'HPOS geçişini tamamlayın' uyarısı görüyorum, bu ne?" WooCommerce kullanıcılarının %60'ından fazlası aynı durumda. Sistemin otomatik olarak önerdiği bu geçişi yapmadan önce, HPOS'un ne olduğunu ve mevcut sitenizi nasıl etkileyeceğini anlamak kritik.
WooCommerce, 2011'den beri siparişleri WordPress'in temel içerik tablosu olan wp_posts içinde saklıyordu. Teknik olarak her sipariş bir "post" gibi işleniyordu. Bu yaklaşım küçük mağazalar için sorunsuz çalışsa da, ayda 5.000+ sipariş alan siteler için ciddi performans darboğazlarına yol açıyordu. HPOS, tam da bu sorunu çözmek için tasarlandı. Ama geçiş kararını vermeden önce, eski sisteminizde hangi eklentilerin çalıştığını, veritabanı yapınızı ve yedekleme stratejinizi gözden geçirmeniz gerekiyor.
Bu yazıda, HPOS'un teknik mimarisini, geçiş sürecinin adımlarını ve gerçek site örnekleriyle karşılaşacağınız olası sorunları detaylandırıyorum. Hollanda'dan verdiğim danışmanlıklarda, özellikle eski eklenti kullanan Türk e-ticaret sitelerinde gördüğüm 3 kritik hatayı da paylaşacağım.
HPOS Nedir ve Neden WordPress Post Tablosundan Ayrıldı?
HPOS (High-Performance Order Storage), WooCommerce'in sipariş verilerini saklamak için geliştirdiği özel veritabanı mimarisidir. Eski sistemde her sipariş wp_posts tablosuna yazılıyor, sipariş detayları ise wp_postmeta tablosuna meta veri olarak kaydediliyordu. Bir sipariş için ortalama 30-40 satır postmeta verisi oluşuyordu. Ayda 10.000 sipariş alan bir site, yılda 4.8 milyon postmeta satırı biriktiriyordu.
Yeni sistemde WooCommerce şu özel tabloları kullanıyor:
- wp_wc_orders: Sipariş ana bilgileri (müşteri, toplam, durum)
- wp_wc_order_addresses: Teslimat ve fatura adresleri
- wp_wc_orders_meta: Sipariş meta verileri (eski postmeta yerine)
- wp_wc_order_operational_data: Operasyonel veriler (stok rezervasyonları)
Bu yapı, sipariş sorgularını ortalama %40 hızlandırıyor. Özellikle admin panelindeki sipariş listesi sayfası, binlerce siparişi filtrelemek için artık 3-4 saniye yerine 1 saniyenin altında yükleniyor. Diolivo projesinde, 18.000 siparişli veritabanında geçiş sonrası admin paneli yüklenme süresi 4.7 saniyeden 1.9 saniyeye düştü.
Ama asıl kazanç, veritabanı indekslemesinde. wp_posts tablosu WordPress'in tüm içerik türleri için kullanıldığından (yazılar, sayfalar, ürünler, siparişler), indeksler şişiyor ve sorgu optimizasyonu zorlaşıyordu. HPOS ile siparişler kendi optimize edilmiş indekslerine sahip.
Mevcut Siteniz HPOS Uyumlu mu? Kontrol Listesi
Geçişe karar vermeden önce, sitenizin teknik altyapısını kontrol etmeniz gerekiyor. Ben Hollanda'dan verdiğim danışmanlıklarda şu 4 adımlı kontrolü uyguluyorum:
Eklenti Uyumluluğu
WooCommerce Admin > Durum > Araçlar bölümüne gidin. "Siparişi veri deposu için uyumluluğu kontrol et" butonuna tıklayın. Sistem, yüklü eklentilerinizi tarayıp HPOS uyumluluk durumunu raporlayacak.
Kritik eklentiler:
- Ödeme gateway'leri (iyzico, PayTR, Stripe): Çoğu güncellendi ama eski versiyonlar sorun çıkarıyor
- Kargo entegrasyonları (Yurtiçi Kargo, MNG, Aras): API bazlı olanlar genelde sorunsuz
- Fatura eklentileri: e-Arşiv, e-Fatura entegrasyonları mutlaka test edilmeli
- Özel sipariş export araçları: CSV export eklentileri çoğunlukla güncelleme gerektirir
Diolivo projesinde CartBounty'nin HPOS uyumlu versiyonunu kullandık. Eski versiyonda sepet kurtarma e-postaları, HPOS sonrası sipariş verilerini okuyamıyordu. Güncelleme sonrası sorun çözüldü.
Özel Kod ve Theme Hook'ları
Eğer temanızda veya functions.php'de sipariş verilerini okuyan özel kodlar varsa, bunları gözden geçirin. Eski sistemde şöyle bir kod çalışıyordu:
$order_id = 123; $order_meta = get_post_meta($order_id, '_billing_email', true);
HPOS'ta bu kod çalışmaya devam ediyor (uyumluluk modu sayesinde), ama önerilen yeni yöntem:
$order = wc_get_order($order_id); $email = $order->get_billing_email();
Ben italyanmutfagi.com için geliştirdiğim tarif şeması otomasyonunda, WooCommerce siparişlerine dokunmadım. Ama eğer sipariş verilerini kullanarak özel raporlama yapıyorsanız, kodlarınızı WooCommerce CRUD metodlarına geçirmeniz gerekiyor.
Veritabanı Yedekleme Stratejisi
HPOS geçişi geri döndürülebilir, ama veritabanı yedekleme olmadan asla başlamayın. Ben şu 3 katmanlı yedekleme uyguluyorum:
1. Hosting panel yedeği (cPanel/Plesk otomatik yedekleme) 2. Manuel SQL export (phpMyAdmin'den tüm veritabanı) 3. WooCommerce sipariş export (CSV formatında)
Üçüncü adım kritik çünkü eğer geçiş sırasında veri kaybı olursa, CSV'den siparişleri manuel import edebilirsiniz. Doktorbul.com projesinde 79.000 doktor profili için benzer bir yedekleme stratejisi kullanmıştık. E-ticaret sitelerinde sipariş verisi, profil verisinden çok daha kritik.
HPOS Geçiş Süreci: Adım Adım Rehber
WooCommerce 8.2 ve sonrasında HPOS varsayılan olarak aktif geliyor. Ama eski siteler için geçiş manuel bir süreç. İşte uyguladığım adımlar:
1. Uyumluluk Modunu Aktifleştirin
WooCommerce > Ayarlar > Gelişmiş > Özellikler sekmesine gidin. "High-performance order storage" seçeneğini aktifleştirin. İlk aşamada "Uyumluluk modu" seçeneğini işaretleyin.
Uyumluluk modu, siparişleri hem eski wp_posts hem de yeni wp_wc_orders tablolarına eşzamanlı yazıyor. Bu, eski eklentilerinizin çalışmaya devam etmesini sağlar. Diolivo'da 2 hafta uyumluluk modunda çalıştırdık, hiçbir sorun görmedik.
2. Mevcut Siparişleri Migrate Edin
WooCommerce > Durum > Araçlar bölümünde "Siparişleri özel tablolara geçir" butonuna tıklayın. Sistem, mevcut tüm siparişleri eski tablodan yeni tablolara kopyalayacak.
Bu işlem sipariş sayınıza göre 5 dakika ile 2 saat arasında sürebilir. 10.000+ siparişli siteler için işlemi gece yapmanızı öneririm. Diolivo'nun 18.000 siparişi 47 dakikada migrate oldu (shared hosting ortamında).
Migrasyon sırasında site çalışmaya devam eder ama admin paneli yavaşlayabilir. Müşteri siparişleri etkilenmez.
3. Test Dönemi
Migrasyon tamamlandıktan sonra, uyumluluk modunda en az 1 hafta test yapın. Kontrol edilmesi gerekenler:
- Yeni siparişler hem eski hem yeni tabloda görünüyor mu?
- Ödeme gateway'leri düzgün çalışıyor mu?
- Sipariş durumu güncellemeleri her iki tabloya da yazılıyor mu?
- Kargo takip numaraları kaydediliyor mu?
- E-fatura entegrasyonu çalışıyor mu?
Ben memuratamalari.com için Claude Haiku ile geliştirdiğim otomasyon sisteminde, API'ler üzerinden veri okuyorum. WooCommerce siparişlerine dokunmadığım için HPOS geçişi sorunsuz oldu. Ama eğer sipariş verilerini harici sistemlerle senkronize ediyorsanız, bu entegrasyonları mutlaka test edin.
4. Uyumluluk Modunu Kapatın
Test dönemi sorunsuz geçtiyse, WooCommerce > Ayarlar > Gelişmiş > Özellikler'den uyumluluk modunu kapatabilirsiniz. Bu noktadan sonra siparişler sadece yeni tablolara yazılacak.
Uyumluluk modunu kapattıktan sonra, eski wp_posts tablosundaki sipariş verilerini temizleyebilirsiniz. Ama ben bunu hemen yapmıyorum. En az 3 ay bekleyip, hiçbir sorun olmadığından emin olduktan sonra temizlik yapıyorum.
Karşılaşabileceğiniz 3 Kritik Sorun ve Çözümleri
Hollanda'dan verdiğim danışmanlıklarda, Türk e-ticaret sitelerinde şu sorunlarla karşılaştım:
Sorun 1: Eski iyzico Eklentisi Sipariş Durumunu Güncelleyemiyor
iyzico'nun resmi WooCommerce eklentisi 2022 öncesi versiyonlarda HPOS desteği yoktu. Geçiş sonrası ödeme onayları geliyordu ama sipariş durumu "Beklemede" olarak kalıyordu.
Çözüm: iyzico eklentisini en son versiyona güncelledik. Eğer güncelleme yoksa, iyzico API'sini doğrudan kullanarak özel bir webhook handler yazdık. Sipariş durumunu WooCommerce CRUD metodlarıyla güncelliyoruz:
$order = wc_get_order($order_id); $order->update_status('processing'); $order->save();
Bu yöntem hem eski hem yeni sistemde çalışıyor.
Sorun 2: Toplu Sipariş Export Eklentisi Boş CSV Üretiyor
Bir müşteri, ayda 3.000+ sipariş aldığı sitesinde WooCommerce Order Export kullanıyordu. HPOS geçişi sonrası CSV export boş dosya üretmeye başladı.
Neden: Eklenti, doğrudan wp_posts ve wp_postmeta tablolarından veri çekiyordu. SQL sorguları HPOS tablolarını tanımıyordu.
Çözüm: Eklentiyi HPOS uyumlu bir alternatifle değiştirdik (Advanced Order Export). Alternatif olarak, WooCommerce'in kendi REST API'sini kullanarak özel bir export scripti de yazabilirsiniz. Kamupersonelhaber.com için ilan.gov.tr API'sini kullanarak günde 50+ ilan çekiyorum. Benzer bir yaklaşımı sipariş export için de uygulayabilirsiniz.
Sorun 3: Özel Raporlama Dashboard'u Veri Göstermiyor
Bir müşterinin özel geliştirdiği satış raporlama paneli, HPOS sonrası boş grafik gösteriyordu. Panel, doğrudan veritabanı sorgularıyla veri çekiyordu:
SELECT * FROM wp_posts WHERE post_type = 'shop_order'
HPOS'ta siparişler artık wp_posts'ta değil. Bu sorgu boş sonuç döndürüyor.
Çözüm: Sorguları WooCommerce'in wc_get_orders() fonksiyonuna geçirdik. Bu fonksiyon, arka planda hangi tablonun kullanıldığını otomatik algılıyor:
$orders = wc_get_orders(array( 'limit' => -1, 'status' => 'completed', 'date_created' => '>=' . strtotime('-30 days') ));
Bu yaklaşım, hem performanslı hem de gelecekte WooCommerce mimarisinde değişiklik olsa bile uyumlu çalışacak.
HPOS Performans Kazançları: Gerçek Verilerle
Diolivo.com.tr projesinde HPOS geçişi öncesi ve sonrası şu metrikleri ölçtük:
Admin paneli sipariş listesi yükleme süresi:
- Önce: 4.7 saniye (18.000 sipariş, shared hosting)
- Sonra: 1.9 saniye (%59 iyileşme)
Sipariş detay sayfası açılma süresi:
- Önce: 2.3 saniye
- Sonra: 1.1 saniye (%52 iyileşme)
Veritabanı sorgu sayısı (sipariş listesi sayfası):
- Önce: 47 sorgu
- Sonra: 31 sorgu (%34 azalma)
Bu kazançlar özellikle büyük siparişli sitelerde kritik. Aylık 5.000+ sipariş alan bir sitede, admin panelindeki her saniye tasarrufu, sipariş işleme hızını artırıyor. Müşteri hizmetleri ekibi, günde 200 siparişi yönetiyorsa, sipariş başına 2 saniye tasarruf günde 400 saniye (6.6 dakika) kazandırıyor.
Ama en önemli kazanç, veritabanı şişkinliğinin önlenmesi. Eski sistemde wp_postmeta tablosu yılda milyonlarca satır biriktiriyordu. HPOS ile sipariş meta verileri ayrı bir tabloda, optimize edilmiş indekslerle tutuluyor. Bu, sitenizin genel performansını da artırıyor çünkü wp_postmeta artık sadece yazı ve sayfa meta verilerini içeriyor.
HPOS Sonrası Bakım ve İzleme
Geçişi tamamladıktan sonra, düzenli izleme yapmanız gerekiyor. Ben müşterilerime şu kontrol listesini öneriyorum:
Haftalık kontroller:
- Yeni siparişler doğru tabloya yazılıyor mu?
- Sipariş durumu güncellemeleri çalışıyor mu?
- Ödeme gateway webhook'ları yanıt veriyor mu?
Aylık kontroller:
- Veritabanı tablo boyutları (wp_wc_orders tablosu beklenen şekilde büyüyor mu?)
- Admin paneli performans metrikleri (yavaşlama var mı?)
- Eklenti güncellemeleri (HPOS uyumluluğu korunuyor mu?)
Futia'da verdiğim aylık bakım hizmetlerinde, bu kontrolleri otomatize ediyorum. Özellikle kamupersonelhaber.com için kurduğum Claude Haiku tabanlı otomasyon sistemi, günlük 50+ ilan üretirken veritabanı sağlığını da izliyor. Benzer bir yaklaşımı WooCommerce siparişleri için de uygulayabilirsiniz.
Eğer sitenizde HPOS geçişi sonrası beklenmedik sorunlarla karşılaşırsanız, WooCommerce'in "Siparişleri eski depolamaya geri döndür" aracını kullanabilirsiniz. Bu araç, tüm siparişleri yeniden wp_posts tablosuna kopyalar. Ama bu geri dönüş, geçiş sırasında oluşan yeni siparişleri etkileyebileceği için dikkatli kullanılmalı.
HPOS Zorunlu mu? 2024 ve Sonrası
WooCommerce 8.2 sürümünden itibaren yeni kurulumlarda HPOS varsayılan olarak aktif geliyor. Eski sistemde kalmak hala mümkün ama WooCommerce ekibi, 2025 sonunda eski sipariş depolama sistemini tamamen kaldıracağını açıkladı.
Yani evet, HPOS geçişi zorunlu hale gelecek. Şu anda geçiş yapmazsanız, gelecekte zorunlu güncelleme sırasında hazırlıksız yakalanabilirsiniz. Ben müşterilerime şunu öneriyorum: Eğer siteniz aktif olarak sipariş alıyorsa, 2024 içinde geçişi tamamlayın. Böylece olası sorunları kontrollü bir ortamda çözme şansınız olur.
İtalyanmutfagi.com projesinde 618 otomatik tarif üretirken, WooCommerce kullanmadık çünkü içerik sitesiydi. Ama e-ticaret siteniz varsa, HPOS geçişini ertelemek performans kaybı ve gelecekteki uyumluluk sorunları demek.
Ben Hollanda'dan Türk e-ticaret sitelerine teknik danışmanlık verirken, HPOS geçişini site optimizasyonunun bir parçası olarak görüyorum. Özellikle CartBounty gibi sepet kurtarma araçlarıyla birleştiğinde, hem performans hem de dönüşüm oranı artıyor. Diolivo'da %340 6 aylık trafik büyümesinin bir kısmı, teknik altyapı iyileştirmelerinden geldi.
Eğer sitenizde HPOS geçişi konusunda tereddüt ediyorsanız veya geçiş sırasında teknik destek gerekiyorsa, benimle WhatsApp üzerinden iletişime geçebilirsiniz: +90 532 491 17 05. Alternatif olarak info@futia.net adresinden de ulaşabilirsiniz. FUTIA olarak, site altyapısı + otomasyon + aylık bakım hizmeti sunuyoruz. HPOS geçişi de bu hizmetin bir parçası.
Sıkça Sorulanlar
HPOS geçişi yapmazsam ne olur?
WooCommerce 8.2 ve sonrası sürümlerde HPOS varsayılan sistem. Geçiş yapmazsanız, eski wp_posts tablosu kullanılmaya devam eder ama performans sorunları yaşarsınız. Özellikle 5.000+ siparişli sitelerde admin paneli yavaşlar, veritabanı şişer. WooCommerce ekibi 2025 sonunda eski sistemi tamamen kaldıracağını açıkladı. Yani geçiş er ya da geç zorunlu olacak. Şimdi yaparsanız, kontrollü bir ortamda sorunları çözme şansınız olur. Erteleme, gelecekte zorunlu güncelleme sırasında hazırlıksız yakalanmanıza yol açar.
HPOS geçişi geri döndürülebilir mi?
Evet, WooCommerce'de "Siparişleri eski depolamaya geri döndür" aracı var. Bu araç, tüm siparişleri yeniden wp_posts tablosuna kopyalar. Ama dikkat: Geçiş sonrası oluşan yeni siparişler, geri dönüş sırasında senkronizasyon sorunu yaşayabilir. Bu yüzden geri dönüş kararını vermeden önce, veritabanı yedeğinizi aldığınızdan emin olun. Ben danışmanlık verdiğim sitelerde, HPOS geçişi öncesi 3 katmanlı yedekleme yapıyorum: hosting paneli yedeği, manuel SQL export ve CSV sipariş export. Böylece herhangi bir sorun olursa, veri kaybı olmadan geri dönebiliyoruz.
Hangi WooCommerce eklentileri HPOS uyumlu değil?
Çoğu popüler eklenti HPOS uyumlu hale geldi ama eski versiyonlar sorun çıkarabiliyor. Özellikle dikkat edilmesi gerekenler: eski iyzico/PayTR ödeme eklentileri, özel sipariş export araçları, doğrudan veritabanı sorgusu yapan raporlama panelleri ve e-Fatura entegrasyonları. Uyumluluk kontrolü için WooCommerce Admin > Durum > Araçlar'dan "Siparişi veri deposu için uyumluluğu kontrol et" butonuna tıklayın. Sistem, yüklü eklentilerinizi tarayıp uyumluluk durumunu raporlayacak. Eğer kritik bir eklenti uyumsuzsa, önce güncelleme yapın veya alternatif bir eklenti bulun. Ben diolivo.com.tr projesinde CartBounty'nin HPOS uyumlu versiyonunu kullandım, sorunsuz çalıştı.
HPOS geçişi ne kadar sürer?
Geçiş süresi, sipariş sayınıza ve sunucu performansınıza bağlı. 1.000 sipariş için ortalama 5-10 dakika, 10.000 sipariş için 30-60 dakika, 50.000+ sipariş için 2-3 saat sürebilir. Diolivo.com.tr'nin 18.000 siparişi shared hosting ortamında 47 dakikada migrate oldu. Geçiş sırasında site çalışmaya devam eder ama admin paneli yavaşlayabilir. Müşteri siparişleri etkilenmez. Ben büyük siparişli siteler için geçişi gece saatlerinde yapmayı öneriyorum. Ayrıca geçiş öncesi mutlaka veritabanı yedeği alın. Uyumluluk modunda en az 1 hafta test yapın, sorun yoksa uyumluluk modunu kapatın.
HPOS performans kazancı ne kadar?
Diolivo.com.tr projesinde ölçtüğümüz veriler: Admin paneli sipariş listesi yükleme süresi %59 iyileşti (4.7 saniyeden 1.9 saniyeye). Sipariş detay sayfası açılma süresi %52 hızlandı (2.3 saniyeden 1.1 saniyeye). Veritabanı sorgu sayısı %34 azaldı (47 sorgudan 31 sorguya). Bu kazançlar özellikle 5.000+ siparişli sitelerde belirgin. Aylık yüksek sipariş alan sitelerde, admin panelindeki her saniye tasarrufu sipariş işleme hızını artırıyor. Ayrıca veritabanı şişkinliği önleniyor çünkü wp_postmeta artık sadece yazı/sayfa meta verilerini içeriyor. Siparişler ayrı, optimize edilmiş tablolarda tutuluyor.
Bu yazıdaki tekniklerden birini uygulamak ister misiniz? Kısa bir form doldurun, 48 saat içinde ücretsiz ön inceleme raporu mailinize düşsün.